我有用於輸入文件並將內容存儲在字符串中的函數。(C++)遞歸調用文件輸入函數
下面是代碼
std::string inputFile();
int main()
{
std::string fileContents = inputFile();
}
std::string inputFile()
{
std::string fileName;
std::cout << "\nEnter file name, including path:\n";
std::getline(std::cin, fileName);
std::ifstream input(fileName.c_str());
std::string buffer;
std::string result;
if (!input.fail()) // if input does not fail
{
while (!input.eof())
{
std::getline(input, buffer);
result.append(buffer);
}
input.close();
return result;
}
else
{
std::cout << "\nInvalid file name or path";
inputFile(); // recursive call to inputFile
}
}
它工作正常,如果文件名和路徑是正確輸入。
但是,如果文件名或路徑輸入不正確,則會執行對inputFile的遞歸調用,併爲用戶提供另一個輸入文件的機會。
:那麼,如果輸入正確的文件名錯誤在Visual Studio 2013扔「在0x77F7A9E8(msvcr120d.dll)在Assignment4.exe未處理的異常:0000005:訪問衝突讀取位置0xCCCCCCC0。」
感謝您
你有什麼話對現在調試?任何信息? –
「while」或「do/while」循環可能比遞歸更合適。 – crashmstr
......我可以保證:while(!input.eof())'是不對的。 – WhozCraig