std :: getline在一个项目中编译良好,但在另一个项目中编译

时间:2014-02-06 15:20:18

标签: 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::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

我一直在摆弄项目设置无济于事。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

找到#define:

#ifdef _UNICODE
#define tstring wstring
#else
#define tstring string
#endif

我将项目的字符集更改为“未设置”并且编译正常。感谢@ chris的评论,指出我正确的方向。