我想测试一下,如果字符串追加char的大小,下面是结果。字符串追加char changning其大小
我知道字符串以空字符结尾,但为什么结果是这样?
#include <iostream>
#include <string>
using namespace std;
int main(){
string a = "" + 'a'; //3
string b = "" + '1'; //2
string c = "a" + 'a'; //2
string d = "1" + '1'; //3
string e = "\0" + 'a'; //20
string f = "\0" + '1'; //1
string g = "a" + '\0'; //1
string h = "1" + '\0'; //1
string i = "" + '\0'; //0
string j = "" + '\0'; //0
cout << a.size() << endl;
cout << b.size() << endl;
cout << c.size() << endl;
cout << d.size() << endl;
cout << e.size() << endl;
cout << f.size() << endl;
cout << g.size() << endl;
cout << h.size() << endl;
cout << i.size() << endl;
cout << j.size() << endl;
return 0;
}
为什么string(“a”)+'\ 0'size是2 //我认为它应该是1 ,,,, string(“\ 0”)+'a'size是1 //我认为它应该是0 ,,,, string(“”)+'\ 0'size is 1 //我认为应该是0 ,,,,, String'size不应该计算空字符? –
'std :: string'是一个*计数的字符串*,即它的长度存储在一个单独的字段中,而'\ 0'字符不作为字符串分隔符 - 它是一个普通字符。它在字符串中的存在不会改变字符串的长度。 –
Thx提前回复。 –