Интересно, неправильно ли я что-то понял: не работает ли конструктор копирования из std::string
не его содержимого?
string str1 = "Hello World";
string str2(str1);
if(str1.c_str() == str2.c_str()) // Same pointers!
printf ("You will get into the IPC hell very soon!!");
Это напечатает "Вы скоро попадете в адьюнджер IPC!" и это меня раздражает.
Это обычное поведение std::string
? Я где-то читал, что он обычно делает глубокую копию.
Однако это работает так, как ожидалось:
string str3(str1.c_str());
if(str1.c_str() == str3.c_str()) // Different pointers!
printf ("You will get into the IPC hell very soon!!");
else
printf ("You are safe! This time!");
Он копирует содержимое в новую строку.