没有匹配的构造函数用于初始化'ifstream'
问题描述:
我在下面的代码中发生错误,它在Visual Studio中正常工作,但是一旦我将它移动到使用gcc编译的Xcode获取此错误没有用于初始化的匹配构造函数'ifstream'我已经看过添加这个作为参考,而不是像本网站上建议的那样复制,但它仍然出现了错误。没有匹配的构造函数用于初始化'ifstream'
void getAndSetTextData::GetBannedList(string fileName)
{
bannedWordCount = 0;
ifstream inFile(fileName);
while(inFile >> currentWord)
{
bannedWords.push_back(currentWord);
bannedWords[bannedWordCount++] = currentWord;
}
inFile.close();
}
任何帮助,将不胜感激。
答
ifstream
构造函数接受一个const char*
作为文件名(现有C++ 11):
ifstream inFile(fileName.c_str());
接受一个const std::string&
作为文件名的溶液中加入在C++ 11的附加构造。
小问题:考虑将参数string fileName
更改为const string& fileName
以避免不必要的副本fileName
。
答
首先你应该检查天气文件是否打开。例如,如果你没有权限访问该文件,或者如果您打开在写文件操作时,有没有足够的磁盘空间,等等 所以
ifstream inFile(fileName);
if(! inFile)
return;
while(inFile >> currentWord)
和你的问题,你是其中fstream?
+0
不是真正的nesacery。如果文件无法正确打开,那么循环将永远不会被输入。 – 2012-03-07 21:04:48
我反对显式使用close的参数:http://codereview.stackexchange.com/a/544/507基本上,如果你不在乎是否有错误,那就让析构函数去做。 – 2012-03-07 21:10:35