g++(mingw)报错:“to_string不是std的成员”

271
我正在制作一个小型的词汇记忆程序,其中单词会随机出现以测试我的理解。 我想使用标准C++库,就像Bjarne Stroustroup告诉我们的那样,但是我遇到了一个看似奇怪的问题。
我想将一个长整数转换为std :: string,以便能够将其存储在文件中。 我使用了to_string()来实现此目的。 问题是,当我使用g ++(版本4.7.0,如其--version标志中所述)编译它时,它会显示:
PS C:\Users\Anurag\SkyDrive\College\Programs> g++ -std=c++0x ttd.cpp
ttd.cpp: In function 'int main()':
ttd.cpp:11:2: error: 'to_string' is not a member of 'std'

我的程序出现了这个错误:

#include <string>

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

但是,我知道这不可能是因为msdn库明确表示它存在,并且Stack Overflow上的早期问题(针对g++版本4.5)说可以通过-std=c++0x标志打开。我做错了什么?

5
可以和我的 GCC 4.4.5 一起工作(即会产生“模糊重载”错误);也许你的 'libstdc++' 已经过时了? - Fred Foo
3
它可以在使用GCC 4.5.1的Ideone上运行,这是链接:http://ideone.com/JNrE1。 - Kerrek SB
5
这对我来说使用g++ 4.6.3有效。你的错误是指第11行。你说你的程序已经"基本被简化为"你的代码,但你发布的代码是否也会出现这个错误? - Vaughn Cato
@VaughnCato - 是的,这就是那个程序。我应该编辑一下,让它更清晰明了。另外,那个多余的 int i 是干嘛的? - Anurag Kalia
2
即使我使用GCC 5.3.1,这对我也不起作用。然而,解决方法很简单,只需使用更高版本的C++标准 - 即通过使用标志-std=c++11或更高版本进行编译。 - Arturo don Juan
可能应该合并类似的问题 - M.M
14个回答

1

在Codeblocks中,转到设置 -> 编译器设置 -> 编译器标志 -> 选择std c++11完成。我之前也遇到了同样的问题...现在它可以工作了!


1

对我来说,确保我拥有:

#include <iostream>  
#include<string>  
using namespace std;

在我的文件中,我做了类似于to_string(12345)的工作。


0

-3
这也发生在我身上,我只是简单写了一个函数,而不是担心更新我的编译器。
string to_string(int number){
    string number_string = "";
    char ones_char;
    int ones = 0;
    while(true){
        ones = number % 10;
        switch(ones){
            case 0: ones_char = '0'; break;
            case 1: ones_char = '1'; break;
            case 2: ones_char = '2'; break;
            case 3: ones_char = '3'; break;
            case 4: ones_char = '4'; break;
            case 5: ones_char = '5'; break;
            case 6: ones_char = '6'; break;
            case 7: ones_char = '7'; break;
            case 8: ones_char = '8'; break;
            case 9: ones_char = '9'; break;
            default : ErrorHandling("Trouble converting number to string.");
        }
        number -= ones;
        number_string = ones_char + number_string;
        if(number == 0){
            break;
        }
        number = number/10;
    }
    return number_string;
}

29
这并不是 std::to_string 的替代品,也绝对不是回答问题的答案。 - Verax
14
不要忘记实现std :: cout!最好重新实现并添加大量其他错误,而不是找出根本问题! - jmc
你正在使事情过于复杂了。只需 ones_char = '0' + number % 10; 即可。 - phuclv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接