没有用于初始化'ifstream'的匹配构造函数

时间:2012-03-07 20:46:18

标签: c++ file class ifstream

我在下面的代码中发现了一个错误,它在visual studio中工作得很好但是一旦我将它移动到使用gcc编译的Xcode得到这个错误没有匹配的构造函数初始化'ifstream'我已经看过添加这是一个参考,而不是本网站上建议的副本,但它仍然提出了错误。

void getAndSetTextData::GetBannedList(string fileName)
{
    bannedWordCount = 0;
    ifstream inFile(fileName);
    while(inFile >> currentWord)
    {
        bannedWords.push_back(currentWord);
        bannedWords[bannedWordCount++] = currentWord;
    }
    inFile.close();
}  

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:11)

ifstream构造函数接受const char*作为文件名(在C ++ 11之前):

ifstream inFile(fileName.c_str());

在C ++ 11中添加了一个接受const std::string&作为文件名的附加构造函数。

次要问题:请考虑将参数string fileName更改为const string& fileName,以避免不必要的fileName副本。

答案 1 :(得分:0)

首先你应该检查文件是否打开天气。例如,如果您没有访问该文件的权限,或者在没有足够的磁盘空间等情况下以写入模式打开文件... 所以

ifstream inFile(fileName);
if( ! inFile )
   return;
while(inFile >> currentWord)

关于你的问题,你是否包括了fstream?