Как я могу в C++ дублировать std :: string *?C++: как дублировать std :: string *
Я хочу сделать что-то вроде этого:
std::string *str1 = new std::string("test");
std::string *str2 = strdup(str1);
delete str1;
std::cout << *str2 << std::endl; // result = "test"
'станд :: string' не * действительно * а char в стеке, он сохраняет только некоторую информацию о состоянии и имеет указатель на массив символов в куче, где хранится фактическое содержимое строки. Есть некоторые оптимизации, которые усложняют историю, но это, по сути, то, что делает 'std :: string' для вас. Он абстрагирует исходный массив символов. Поэтому не используйте указатели на 'std :: string', а используйте ссылки в ваших функциях, таких как 'std :: string &', или даже лучше использовать 'const std :: string &'. – rwols