在 C++ 中将字符串添加到另一个字符串时的奇怪行为

Strange behaviour while adding string to another string in C++

one2ans"000000"

string ans = "000000";
ans += string("1", one);
cout<<ans<<endl;

输出为:

0000001�

但我想要输出:

00000011

我做错了什么?

只需使用c++字符串并使用+运算符连接字符串。

string("1", one) 并不像您认为的那样。它不会重复 "1" 字符串 one 次。它从 "1" 复制第一个 onechar ,在本例中是 '1' 字符和 '[=18=]' null-terminator紧随其后,这是输出中 的来源。那不是你想要的。

改用string(one, '1')。这将复制 '1' 字符 one 次,如您所愿,例如:

ans = "000000";
ans += string(one, '1');
cout << ans << endl;