ifstream在循环中不起作用

时间:2010-10-09 03:06:06

标签: c++

我刚开始用C ++编程。在循环执行ifstream期间我遇到了一些问题。

do  
{  
    system("cls");  
    inFile.open ("Account_Details.txt");  
    while (!inFile.eof())  
    {  
         getline (inFile, line);  
         cout << line << endl;  
    }  
         inFile.close();  
         cin.ignore(100, '\n');  
         cin >> choice;  
}  
while (choice != '1' && choice != '2');  

这是我的代码的一部分。循环运行时,它不显示txt文件中的数据 谢谢你的帮助。 ^^

3 个答案:

答案 0 :(得分:3)

在infile.close()之后添加infile.clear() - 关闭不清除eof位

答案 1 :(得分:1)

该文件可能不存在。如果是这种情况,它将创建一个空文件。检查文件的路径。

答案 2 :(得分:0)

我写了近10年的C ++代码。在那段时间里,我学会了如何以最小化我创建的错误(错误)数量的方式使用C ++。可能有些人会不同意我,但我建议你只使用for和while做循环。永远都不要。好好学习这两个,你就可以随时成功循环。

为了说明我的技巧,我冒昧地使用我的风格重写你的代码。它具有完整的错误检查,使用带有预读的while循环,一些C ++ 0x和简化的流处理:

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>

int main(int argc, char** argv)
{
   // check program arguments
   if (argc<2) {
      std::cerr << "Usage: " << argv[0] << " file" << std::endl;
      return EXIT_FAILURE;
   }

   // check file can be opened
   std::ifstream infile(argv[1]);
   if (!infile) {
      std::cerr << "Failed to read " << argv[1] << std::endl;
      return EXIT_FAILURE;
   }

   std::string input;

   // read-ahead
   std::getline(std::cin, input);

   while (input!="q" && input!="quit" && input!="exit") {
      //system("cls");

      // print contents of file by streaming its read buffer
      std::cout << infile.rdbuf();

      // read file again
      infile = std::ifstream(argv[1]);

      // finally, read again to match read-ahead
      std::getline(std::cin, input);
   }
}

保存到 main.cpp ,编译为 print.exe 并使用 print.exe main.cpp 运行。 祝学习C ++好运!