我有以下代码段...
for(char c: "ABC") cout << c << endl;
for(char c: string("ABC")) cout << c << endl;
第二个工作正常。但是第一个在不同的环境中表现不同。两者有什么区别?
答案 0 :(得分:6)
"ABC"
是类型为const char[4]
的{{3}},即一个包含4个char
的数组,其中包括终止空字符'\0'
。 for(char c: "ABC") cout << c << endl;
将输出所有4个元素。
string("ABC")
的类型为std::string
,仅包含3个元素,for(char c: string("ABC")) cout << c << endl;
将输出3个元素,'A'
,'B'
和{{1 }}。