【问题标题】:itoa replace to std::to_string how toitoa 替换为 std::to_string 如何
【发布时间】:2012-12-10 05:01:04
【问题描述】:

如何替换这个

    itoa(i, buf, 10);
    key1.append(buf);
    key2.append(buf);
    key3.append(buf);

std::to_string

itoa 给了我一个错误,它没有在范围内声明它不是标准的一部分

我听说我可以使用std::to_string 制作另一个版本,我该怎么做?

【问题讨论】:

  • 这是reference。它甚至包括一个例子。
  • 到底是什么问题? std::to_string(i)不解决吗?问题是这会创建一个std::string,但你需要一个char *
  • @jogojapan - 这只有在 C++11 中才有可能,对吧?
  • 是的,std::to_string 只存在于 C++11 中。如果您正在寻找适用于 C++98/03 的解决方案,则不能使用 std::to_stringboost::lexical_cast 通常被推荐作为替代方案(但要求您包含 Boost 库中的相关标头)。当然,答案中提到的std::ostringstream 是另一种选择。

标签: c++ tostring itoa


【解决方案1】:

如果你使用C++11,你可以使用std::to_string

#include <string>
std::string buf = std::to_string(i);
key1.append(buf);
key2.append(buf);
key3.append(buf);

或者你可以使用std:stringstream

#include <sstream>
std::stringstream ss;
ss << i;
key1.append(ss.str());
key2.append(ss.str());
key3.append(ss.str());

【讨论】:

    【解决方案2】:

    要使用 itoa() 函数,你需要包含 stdlib.h 文件,然后你在使用 itoa() 时不会看到错误。

    【讨论】:

    • 正如问题所说,itoa 不是标准的一部分,可能不可用;在这种情况下,您将收到错误消息。
    猜你喜欢
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多