【发布时间】:2020-05-19 11:12:53
【问题描述】:
计划 1:
#include <iostream>
using namespace std;
int main() {
string str;
char temp = 'a';
str += temp + "bc";
cout << str;
return 0;
}
输出:
未知字符
计划 2:
#include <iostream>
using namespace std;
int main() {
string str;
char temp = 'a';
str += temp;
str += "bc";
cout << str;
return 0;
}
输出:
abc
为什么两个输出不同?两个输出不应该相同吗?
【问题讨论】:
-
不,它们不应该相同。第一个是未定义的行为。小测验:将
char添加到const char *会发生什么? -
char加上const char[]不等于char加上string后跟const char[]加上string -
@SamVarshavchik:
'a'为 1 或 2 时没有可能的编码? ;-) -
为了说明,试试这个:cout
标签: c++ string operator-overloading c-strings pointer-arithmetic