22

我试图使该to_string(NUMBER)功能在我的 Ubuntu 计算机上工作数周,但它永远不会在 QT 环境或其他任何地方工作。我的代码在我的 Mac osx 上完美运行,但是当我尝试在 Ubuntu 中运行它时,它抱怨to_string没有在范围内声明。对此的任何解决方案将不胜感激。我尝试更新 gcc 编译器,但没有解决问题。请帮忙。

我正在使用 QT Creator 4.8.1,我正在使用 C++ 和最新版本的 Ubuntu。

int Bint::operator*(int temp){
    Bint b(to_string(temp));
    return ((*this)*b);
}

我在 pro 文件中缺少 QMAKE_CXXFLAGS += -std=c++0x 。

4

6 回答 6

28

它对您不起作用可能有不同的原因:也许您需要使用 来限定名称std::,或者您可能没有 C++11 支持。

如果您有 C++11 支持,则此方法有效:

#include <string>

int main()
{
  std::string s = std::to_string(42);
}

要使用 g++ 或 clang 启用 C++11 支持,您需要传递选项-std=c++0x. 您还可以-std=c++11在这些编译器的较新版本上使用。

于 2013-03-22T11:28:45.037 回答
12

您必须使用 c++11 支持编译文件

g++ -std=c++0x  -o test example.cpp
于 2015-08-18T01:24:48.037 回答
3

我通过将Application.mk中的第一行从

APP_STL := gnustl_static

APP_STL := c++_static
于 2015-09-29T17:14:07.533 回答
2

您需要在编译器中进行一些更改。在 Dev C++ 编译器中: 1. 转到编译器设置/编译器选项。2.点击General选项卡 3.勾选复选框(调用编译器时添加以下命令。4.写-std=c++11 5.点击Ok

于 2019-07-20T19:46:39.473 回答
1

如上所述,此错误是由于编译器未使用 c++11 或更高标准造成的。此答案适用于Windows 10

对于代码块版本 17 中的 c++11 及更高版本的标准支持:

  1. 单击工具栏中的设置

  2. 出现一个下拉菜单。选择编译器选项。

  3. 选择全局编译器设置

  4. 在第二部分这个新窗口的工具栏中,选择编译器设置

  5. 然后在下面的工具栏中选择编译器标志选项。

  6. 展开常规选项卡。检查您希望编译器遵循的C++ 标准。

  7. 单击确定

对于那些试图在 Sublime 文本中获得 C++11 支持的人。

  1. 下载mingw 编译器版本 7或更高版本。在低于此的版本中,使用的默认 c++ 标准是 c++98,而在高于 7 的版本中,使用的默认标准是 c++11。

  2. 复制主 C 盘中的文件夹。它不应位于C 盘中的任何其他文件夹中。

  3. 将文件夹重命名为 MinGW。此名称不区分大小写,因此它应该是 mingw 的任何变体,并且不得在名称中包含任何其他字符。

  4. 然后转到环境变量并编辑路径变量。添加此“ C:\mingw\bin ”并单击“确定”。

  5. 您可以在 cmd 中通过键入来检查 g++ 的版本g++ -v

  6. 这应该足以在 sublime 文本中启用 c++11。

如果您还想从输入文件中获取输入和输出以用于竞争性编程目的,请点击此链接

于 2020-06-15T16:27:02.080 回答
-1
//Try this if you can't use -std=c++11:-
int number=55;
char tempStr[32] = {0};
sprintf(tempStr, "%d", number);
于 2020-06-11T17:31:44.710 回答