在 C++ 中复制后无法打印字符串值

can't print a string value after copy in c++

本文关键字:打印 字符串 C++ 复制      更新时间:2023-10-16
string s1 = "Hello";
string s2;
copy(s1.begin(), s1.end(), s2.begin());
cout << s2 << endl;

这段代码看起来很简单,但它在最后一行什么也不打印。谁能告诉我有什么问题吗?

目标字符串没有大小。尝试使用std::back_inserter():

copy(s1.begin(), s1.end(), std::back_inserter(s2));

您试图复制到s2的内容,但它是空的,因此产生未定义的行为。

试试这样写:

copy(s1.begin(), s1.end(), std::back_inserter(s2));

……或者:

s2.assign(s1);

…或者是最干净最明显的:

s2 = s1;

如果您只需要将字符串s1复制到s2,只需将s1传递给s2的构造函数:

string s1 = "Hello";
string s2(s1);
cout << s2 << endl;