c ++附加到字符串

Posted

技术标签:

【中文标题】c ++附加到字符串【英文标题】:c++ appending to string 【发布时间】:2012-11-09 03:42:53 【问题描述】:

有没有一种简单的方法可以将整数附加到字符串?

我有一个这样的 for 循环:

for (int i = 0; i < text.length(); i++) 
  for (int g = 0; g < word.length(); g++) 
    if (text[i] == word[g]) 
      kodas.append(g);
    
  

我需要得到数组的索引是否相等,索引当然是整数类型。但是当我这样做时,我得到一个错误:

invalid conversion from ‘int’ to ‘const char*’ [-fpermissive]|

有没有办法解决这个问题?

【问题讨论】:

这会实现什么?你最终会得到一个毫无意义的十进制数字连接...... 将整数附加到字符串没有用,就像将乘客附加到火车没有用一样。你想要的是写出一个整数到字符串的末尾。这表明您宁愿使用stringstream 而不是string 【参考方案1】:

是的

例如,您可以:

使用itoa函数将整数转换为字符串 将您的kodas 设为ostringstream 并像cout 一样“写入”其中:kodas &lt;&lt; g

【讨论】:

【参考方案2】:

最简单的就是这样:

if (kodas.empty())  kodas += ' '; 
kodas += std::to_string(g);

如果您没有 C++11,请改用 boost::lexical_cast&lt;std::string&gt;(g)

一切都失败了,你可以做这样可怕的事情:

kodas += static_cast<std::ostringstream&>(std::ostringstream() << g).str();

【讨论】:

@d33tah:还不错,只是看起来很丑。【参考方案3】:

itoa(),它的 into alpha 函数,应该可以帮助你。如果您愿意,sprintf 或 vsprintf 也可以使用

【讨论】:

建议vsprintf 而不是vsnprintf 是边缘犯罪!你是僵尸网络吗?【参考方案4】:

如果您使用 std::strings,请使用 stringstream:#include &lt;sstream&gt;

#include <sstream>
using namespace std;
string oldString = "old";
int toAppend = 5;
stringstream ss(toAppend);
string newString = oldString + ss.str();

newString 将是 "old5"

【讨论】:

我推荐stringstream ss(oldString);,结果就是ss.str()【参考方案5】:

在 C++ 中有几种将数字格式化为字符串的方法,包括 sprintf()boost:lexical_cast() 等。请参阅The String Formatters of Manor Farm 以获得良好的比较和其他建议。另外,C++11 有std::to_string。你的编译器可能有也可能没有。

【讨论】:

以上是关于c ++附加到字符串的主要内容,如果未能解决你的问题,请参考以下文章

C自动将空字符附加到字符串?

如何从 C 中将新的字符串元素附加到 Swift 中的数组

如何将部分字符数组附加到字符串?

C++ AVR 附加到 const char *

如何将字符附加到字符串? [复制]

R - 如果列包含来自向量的字符串,则将标志附加到另一列