繁体   English   中英

to_string 未在范围内声明

[英]to_string not declared in scope

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

它对您不起作用可能有不同的原因:也许您需要使用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

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

g++ -std=c++0x  -o test example.cpp

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

APP_STL := gnustl_static

APP_STL := c++_static

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

这个错误,正如上面正确识别的,是由于编译器没有使用 c++11 或更高的标准。 此答案适用于Windows 10

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

  1. 单击工具栏中的设置

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

  3. 选择全局编译器设置

  4. 在第二部分的这个新窗口的工具栏中,选择compiler settings

  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. 这应该足以在 sublime text 中启用 c++11。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM