如何将char附加到std :: string?


175

以下失败并显示错误 prog.cpp:5:13: error: invalid conversion from ‘char’ to ‘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;
}

对不起,这个愚蠢的问题,但我在Google周围搜索,我看到的只是“ char array to char ptr”,“ char ptr to char array”等。


编译器错误是的。我忘记了什么错误,但这是合理的。
drowneath

3
您可以在下面找到更好的答案,但是可以使第二个示例像char d [2] = {'d',0};那样工作。或者只是char d [2] =“ d”; 基本上,您需要一个0来终止传递给追加的c样式字符串
sbk

Answers:


222
y += d;

我将使用+=运算符而不是命名函数。


2
为什么您认为+ =比push_back更好?是减少打字还是您还有其他原因?
格伦(Glen)

4
少打字。在gccbasic_string::operator+=只是在通话中push_back
eduffy

2
对于字符串,这是更自然的IMO。push_back是容器函数,字符串是STL中的专用字符串:)
AraK

6
让我们解决这个问题:为什么您认为push_back比+ =更好?我认为+ =清晰明了。
Jesper

34
您需要注意这一点,因为如果您习惯了,如果使用ya char*而不是,则可以很好地进行编译std::string。它将d字符添加到指针y。
Zan Lynx
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.