История изменений
Исправление DawnCaster, (текущая версия) :
Это абсолютно нормально. Из-за кривожопости разработчиков стандартов в C++ - в std::string, by-design, можно хранить не только эквивалент нуль-терминированной сишной ANSI строки но и произвольные буфферы с данными. Собственно, оттуда у вас и второй параметр при создании std::string.
Вполне логично получается, что в таком случае, s != s2. Если создать строку из char str[5] без указания размера, то получим что s == s2 .
Тут нужно понимать что вы сравниваете не ANSI-C-строки в привычном понимании, а проверяете равенство объектов s и s2, а оператор == там ещё и перегружен. Это действо ни разу не эквивалентно сишной функции сравнения строк strcmp. Про то что смешивать код на C и C++ - это плохая идея, вам уже выше написали. Не делайте так.
Исправление DawnCaster, :
Это абсолютно нормально. Из-за кривожопости разработчиков стандартов в C++ - в std::string, by-design, можно хранить не только эквивалент нуль-терминированной сишной ANSI строки но и произвольные буфферы с данными. Собственно, оттуда у вас и второй параметр при создании std::string.
Вполне логично получается, что в таком случае, s != s2. Если создать строку из char str[5] без указания размера, то получим что s == s2 .
Тут нужно понимать что вы сравниваете не ANSI-C-строки в привычном понимании, а проверяете равенство объектов s и s2, а оператор == там ещё и перегружен. Это действо ни разу не эквивалентно сишной функции сравнения строк strcmp. Про то что мешать код на C и C++ - это плохая идея вам уже выше написали. Не делайте так.
Исправление DawnCaster, :
Это абсолютно нормально. Из-за кривожопости разработчиков стандартов в C++ - в std::string, by-design, можно хранить не только эквивалент нуль-терминированной сишной ANSI строки но и произвольные буфферы с данными. Собственно, оттуда у вас и второй параметр при создании std::string.
Вполне логично получается, что в таком случае, s != s2. Если создать строку из char str[5] без указания размера, то получим что s == s2 .
Тут нужно понимать что вы сравниваете не ANSI-C-строки в привычном понимании, а проверяете равенство объектов s и s2, а оператор == там ещё и перегружен. Это действо ни разу не эквивалентно сишной функции strcmp. Про то что мешать код на C и C++ - это плохая идея вам уже выше написали. Не делайте так.
Исправление DawnCaster, :
Это абсолютно нормально. Из-за кривожопости разработчиков стандартов в C++ - в std::string, by-design, можно хранить не только строки но и произвольные буфферы с данными. Собственно, оттуда у вас и второй параметр при создании std::string.
Вполне логично получается, что в таком случае, s != s2. Если создать строку из char str[5] без указания размера, то получим что s == s2 .
Тут нужно понимать что вы сравниваете не ANSI-C-строки в привычном понимании, а проверяете равенство объектов s и s2, и оператор == там ещё и перегружен. Это действо не эквивалентно сишной функции strcmp.
Исходная версия DawnCaster, :
Это абсолюино нормально. Из-за кривожопости тех кто разрабатывает стандарты в C++ - в std::string, by-design, можно хранить не только строки но и произвольные буфферы с данными. Собственно, оттуда у вас и второй параметр при создании std::string.
Вполне логично получается, что в таком случае, s != s2. Если создать строку из char str[5] без указания размера, то получим что s == s2 .