在 C++ 中将字符串添加到另一个字符串时的奇怪行为
Strange behaviour while adding string to another string in C++
one
是 2
,ans
是 "000000"
。
string ans = "000000";
ans += string("1", one);
cout<<ans<<endl;
输出为:
0000001�
但我想要输出:
00000011
我做错了什么?
只需使用c++字符串并使用+
运算符连接字符串。
string("1", one)
并不像您认为的那样。它不会重复 "1"
字符串 one
次。它从 "1"
复制第一个 one
个 char
,在本例中是 '1'
字符和 '[=18=]'
null-terminator紧随其后,这是输出中 �
的来源。那不是你想要的。
改用string(one, '1')
。这将复制 '1'
字符 one
次,如您所愿,例如:
ans = "000000";
ans += string(one, '1');
cout << ans << endl;
one
是 2
,ans
是 "000000"
。
string ans = "000000";
ans += string("1", one);
cout<<ans<<endl;
输出为:
0000001�
但我想要输出:
00000011
我做错了什么?
只需使用c++字符串并使用+
运算符连接字符串。
string("1", one)
并不像您认为的那样。它不会重复 "1"
字符串 one
次。它从 "1"
复制第一个 one
个 char
,在本例中是 '1'
字符和 '[=18=]'
null-terminator紧随其后,这是输出中 �
的来源。那不是你想要的。
改用string(one, '1')
。这将复制 '1'
字符 one
次,如您所愿,例如:
ans = "000000";
ans += string(one, '1');
cout << ans << endl;