C++ getline在一个项目中编译良好,但在另一个项目中编译不好
代码如下:C++ getline在一个项目中编译良好,但在另一个项目中编译不好,c++,std,getline,C++,Std,Getline,代码如下: std::filebuf fbuffer; if ( fbuffer.open( fileName, std::ios::in ) ) { std::istream str( &fbuffer ); std::tstring line; while ( std::getline( str, line, '\n' ) ) { //parsing } } 在我的项目中,我从中获得了这段代码,它编译得很好。当我将此代码复制/
std::filebuf fbuffer;
if ( fbuffer.open( fileName, std::ios::in ) )
{
std::istream str( &fbuffer );
std::tstring line;
while ( std::getline( str, line, '\n' ) )
{
//parsing
}
}
在我的项目中,我从中获得了这段代码,它编译得很好。当我将此代码复制/粘贴到一个一次性项目中时,我遇到了以下错误(为了简洁起见,修剪了一些模板垃圾):
我一直在摆弄项目设置,但毫无用处。有什么想法吗?找到了一个#定义:
我将项目的字符集更改为“notset”,它可以很好地编译。感谢@chris的评论为我指明了正确的方向。可能将
'\n'
更改为L'\n'
,但是没有std::tstring
,这使得此代码无效。
std::getline expects 2 arguments - 3 provided //getline() has overloads for 2 and 3 arguments
std::getline( std::basic_istream, std::basic_string, const _Elem ) template parameter '_Elem' is ambiguous: could be wchar_t or char
#ifdef _UNICODE
#define tstring wstring
#else
#define tstring string
#endif