字符串不是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