【问题标题】:Converting int to string [duplicate]将int转换为字符串[重复]
【发布时间】:2014-08-07 19:57:02
【问题描述】:

这里str2 是我需要附加的字符串,str1 是我附加到str2 上的字符串。在我将最后一个附加到str2 之后,我需要将一个数字(int cnt)附加到str2。所以我正在使用下面的代码,我想到了它并且它正在工作。像这样编码是错误的吗,因为我看到了 string s = lexical_cast<string>(a);itoa (i,buffer,10); 实现的用法,其中编译器抱怨库。

    string str2;
    string str1;
    int cnt;
    str2 += str1 ;
    str2 += char(cnt+48);//cnt converted to ASCII char and appended;

【问题讨论】:

  • @FedericoReghenzani 我浏览了你之前建议的线程,它没有讨论这里显示的代码 sn-p 的任何内容
  • @ajax_Velu C++ 不是 BASIC :P ...

标签: c++ string int


【解决方案1】:

此声明

str2 += char(cnt+48);

不好。首先它使用幻数 48。最好至少写成

str2 += char( cnt + '0' );

其次,代码只有在 cnt 包含一位数字时才有效。

最好使用标准函数std::to_string例如

str2 += std::to_string( cnt );

【讨论】:

  • 请注意 std::to_string 是在 C++11 中添加的!没有在标签或代码中提及 C++11。
  • @Conduit 我想知道,我们什么时候可以假设 C++11 == C++。
  • @zdan 转换完所有 C++ 代码后,哈哈。或者,实际上,一旦使用 C++11 标准进行编译,我猜就不再需要标志了?
  • @zdan:现在可能是最接近的。如果幸运的话,问题已经是C++ 是指C++11 还是C++14
  • std::stringstream 也很有用,不依赖于 C++11 并允许 cout 样式格式化
【解决方案2】:

如果您不想使用 c++11 及其 std::to_string(...),您可以使用 ostringstream 类。

#include <iostream>
#include <sstream>

using namespace std;

int main()
{
    ostringstream ss;

    ss << 1;

    string str = ss.str();

    cout << str << endl;

    return 0;
}

输出:

1

【讨论】:

    猜你喜欢
    • 2015-06-18
    • 2017-05-07
    • 2012-01-24
    • 2013-11-04
    • 2021-12-25
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    相关资源
    最近更新 更多