字符串不是std的成员,说g ++(mingw)

我正在制作一个小词汇记忆程序,在这个程序中,词语会随机地闪现在我的意思之中。 我想用Bjarne Stroustroup告诉我们的标准C ++库,但是我遇到了一个看起来很奇怪的问题。

我想将一个long整型变成std::string以便能够将它存储在一个文件中。 我已经用to_string()同样的to_string() 。 问题是,当我用g ++(在版本标志中提到的版本4.7.0)编译它时,它说:

PS C:UsersAnuragSkyDriveCollegePrograms> 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标志打开它。 我究竟做错了什么?


这是MinGW下的一个已知错误。 相关的Bugzilla。 在评论部分,您可以获得一个补丁程序,使其可以与MinGW一起使用。

在MinGW-w64发行版中这个问题已经得到修复,比MinGW-w64项目提供的GCC 4.8.0更高。 尽管有这个名字,该项目还提供了32位和64位的工具链。 Nuwen MinGW发行版也解决了这个问题。


#include <string>
#include <sstream>

namespace patch
{
    template < typename T > std::string to_string( const T& n )
    {
        std::ostringstream stm ;
        stm << n ;
        return stm.str() ;
    }
}

#include <iostream>

int main()
{
    std::cout << patch::to_string(1234) << 'n' << patch::to_string(1234.56) << 'n' ;
}

不要忘记包含#include <sstream>


正如所暗示的,这可能是您的编译器版本的一个问题。

尝试使用以下代码将long转换为std::string

#include <sstream>
#include <string>
#include <iostream>

int main() {
    std::ostringstream ss;
    long num = 123456;
    ss << num;
    std::cout << ss.str() << std::endl;
}
链接地址: http://www.djcxy.com/p/20963.html

上一篇: string is not a member of std, says g++ (mingw)

下一篇: C++ performance challenge: integer to std::string conversion