下面的代码会出现错误prog.cpp:5:13: error:无效的从' char '到' const char* '的转换
int main()
{
char d = 'd';
std::string y("Hello worl");
y.append(d); // Line 5 - this fails
std::cout << y;
return 0;
}
我也尝试了,下面,它编译,但在运行时随机行为:
int main()
{
char d[1] = { 'd' };
std::string y("Hello worl");
y.append(d);
std::cout << y;
return 0;
}
对不起,这个愚蠢的问题,但我已经搜索了谷歌,我能看到的只是“字符数组到字符ptr”,“字符ptr到字符数组”,等等。
int main()
{
char d = 'd';
std::string y("Hello worl");
y += d;
y.push_back(d);
y.append(1, d); //appending the character 1 time
y.insert(y.end(), 1, d); //appending the character 1 time
y.resize(y.size()+1, d); //appending the character 1 time
y += std::string(1, d); //appending the character 1 time
}
请注意,在所有这些示例中,您都可以直接使用字符文字:y += 'd';。
第二个例子几乎是可行的,但原因与此无关。Char d[1] = {'d'};没有工作,但char d[2] = {'d'};(注意数组的大小为2)将与const char* d = "d";大致相同,并且可以追加字符串字面量:y.p append(d);。