【问题标题】:Why I can't use append() to add a variable to a string?为什么我不能使用 append() 将变量添加到字符串?
【发布时间】:2021-10-22 23:49:49
【问题描述】:

我有一段代码:

char temp = word[0];
word.erase(0, 1);
word.append(temp);     //word.push_back(temp); is fine

我收到一个错误: 错误:没有匹配的成员函数调用'append'

我的问题是为什么我不能在这里使用 append() ?提前致谢!

【问题讨论】:

  • word 的类型是什么?它是如何声明的?
  • 您好 Enlico,感谢您的提问。 word 是一个字符串 stringstream ss(sentence);串词; while(ss >> word){}

标签: c++ append push-back


【解决方案1】:

我将假设wordstd::string

如果您查看std::basic_string::append() 的文档,您会发现它有一堆重载,但它们都是针对字符串或重复字符的。根本没有任何重载可以接受单个字符。

仅此而已。

push_back() 附加单个字符,append() 附加 字符串 个字符。在您的示例中,temp 是单个字符,因此在您查询的两个函数中,只有 push_back() 可用。

或者,std::string 提供operator+=(),这在这两种情况下都有效。所以你也可以这样做:

word += temp;

【讨论】:

  • "在您的示例中,temp 是单个字符,因此只有 push_back() 可用。" - 还有 string::operator+=,它接受两个单个字符和字符串。
  • @RemyLebeau 谢谢,我确实应该提到我是从字面上解决 OP 的问题。已更正。
【解决方案2】:

我不完全知道为什么会出现错误,但我搜索并找到了这个网站,它使用 append 函数将字符添加到字符串中没有问题。 Check it here

【讨论】:

  • 但它使用 s.append(1, ch);有两个参数...
  • 没错,该参数指定要添加多少个字符。例如,如果它是 2,那么它将在字符串的末尾添加两个 'ch'。不指定时会报错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 2020-10-05
  • 2014-10-10
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多