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

时间:2014-08-11 14:10:29

标签: c++ string

string s1 = "Hello";
string s2;
copy(s1.begin(), s1.end(), s2.begin());
cout << s2 << endl;

这段代码看起来很简单,但在最后一行没有打印任何内容。有人可以告诉我有什么问题吗?

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

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

尝试类似:

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

...或:

s2.assign(s1);

......或者最干净,最明显的:

s2 = s1;

答案 2 :(得分:0)

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

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