“to_string”不是“std”的成员?

问题描述 投票:0回答:3

好的,所以我有

tmp.cpp:

#include <string>

int main()
{
    std::to_string(0);
    return 0;
}

但是当我尝试编译时我得到:

$ g++ tmp.cpp -o tmp
tmp.cpp: In function ‘int main()’:
tmp.cpp:5:5: error: ‘to_string’ is not a member of ‘std’
     std::to_string(0);
     ^

我正在运行 g++ 版本 4.8.1。与我发现的所有其他对此错误的引用不同,我使用 MinGW,我使用的是 Linux (3.11.2)。

有什么想法为什么会发生这种情况吗?这是标准行为,我做错了什么,还是某个地方有错误?

c++ linux string c++11 g++
3个回答
54
投票

您可能想使用

指定 C++ 版本
g++ -std=c++11 tmp.cpp -o tmp

我手头没有 gcc 4.8.1,但在旧版本的 GCC 中, 你可以使用

g++ -std=c++0x tmp.cpp -o tmp

至少 gcc 4.9.2 我相信也通过指定支持部分 C++14

g++ -std=c++1y tmp.cpp -o tmp

更新: gcc 5.3.0(我使用的是cygwin版本)现在支持

-std=c++14
-std=c++17


26
投票

to_string 适用于最新的 C++ 版本,例如版本 11。对于旧版本,您可以尝试使用此函数

#include <string>
#include <sstream>

template <typename T>
std::string ToString(T val)
{
    std::stringstream stream;
    stream << val;
    return stream.str();
}

通过添加模板,您也可以使用任何数据类型。 您必须在此处包含

#include<sstream>


0
投票

std::to_string 函数是 C++11 标准的一部分,因此您遇到的错误通常表明您的编译器未设置为使用 C++11 标准。

解决此问题的方法如下:

如果您在 Windows 上使用 MinGW: 如果您使用的是 Windows 并使用 MinGW,您可能需要确保您的环境设置正确。如果遇到类似问题,您可以按照以下方法在 Visual Studio Code 中配置 MinGW 环境:

  1. 设置编译器路径: 确保您的编译器路径设置正确。从 c1.exe 更改为 MinGW/bin/gcc.exe。

  2. 更改 IntelliSense 模式: 将 IntelliSense 模式设置为 ${default}。

  3. 包含路径: 确保包含路径设置为 MinGW 包含目录,例如 C:\MinGW\include。

这些步骤应该有助于解决任何配置问题并使您的功能正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.