我在下面的代码中发现了一个错误,它在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();
}
任何帮助都将不胜感激。
答案 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?