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 << g
【讨论】:
【参考方案2】:最简单的就是这样:
if (kodas.empty()) kodas += ' ';
kodas += std::to_string(g);
如果您没有 C++11,请改用 boost::lexical_cast<std::string>(g)
。
一切都失败了,你可以做这样可怕的事情:
kodas += static_cast<std::ostringstream&>(std::ostringstream() << g).str();
【讨论】:
@d33tah:还不错,只是看起来很丑。【参考方案3】:itoa(),它的 into alpha 函数,应该可以帮助你。如果您愿意,sprintf 或 vsprintf 也可以使用
【讨论】:
建议vsprintf
而不是vsnprintf
是边缘犯罪!你是僵尸网络吗?【参考方案4】:
如果您使用 std::strings,请使用 stringstream:#include <sstream>
#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 ++附加到字符串的主要内容,如果未能解决你的问题,请参考以下文章