to_string未在范围中声明

时间:2013-03-22 11:25:09

标签: c++ ubuntu qt-creator

我试图让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。

6 个答案:

答案 0 :(得分:19)

可能有不同的原因导致它不适合您:或许您需要使用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

答案 1 :(得分:11)

您必须使用c ++ 11支持

编译该文件
g++ -std=c++0x  -o test example.cpp

答案 2 :(得分:3)

我通过更改 Application.mk 中的第一行来解决此问题。

APP_STL := gnustl_static

APP_STL := c++_static

答案 3 :(得分: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. 您可以通过键入g++ -v来检查cmd中的g ++版本。

  6. 这足以在崇高的文本中启用c ++ 11。

如果您也想从输入文件中获取输入和输出以进行竞争性编程,请遵循此link

答案 4 :(得分:0)

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

答案 5 :(得分:-1)

//Try this if you can't use -std=c++11:-
int number=55;
char tempStr[32] = {0};
sprintf(tempStr, "%d", number);