ifstream在循环中不工作 我刚开始用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'); do { 系统(“cls”); infle.open(“Account_Details.txt”); 而(!infle.eof()) { getline(填充,行); 不能选择; } while(choice!=“1”&&choice!=“2”);

ifstream在循环中不工作 我刚开始用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'); do { 系统(“cls”); infle.open(“Account_Details.txt”); 而(!infle.eof()) { getline(填充,行); 不能选择; } while(choice!=“1”&&choice!=“2”);,c++,C++,这是我代码的一部分。当循环运行时,它不会在txt文件中显示数据。 感谢您的帮助。^^文件可能不存在。如果是这种情况,它将创建一个空文件。请检查文件的路径。文件可能不存在。如果是这种情况,它将创建一个空文件。请检查文件的路径。在infle.close()之后添加infle.clear()EFF位在FILILL。CULL()之后不被关闭的< P>添加IfIL.CULL()所清除。EOF位不被关闭 > P>我已经编写了C++代码将近10年。在此期间,我学会了如何以最小化错误数(bug)的方式使用C++

这是我代码的一部分。当循环运行时,它不会在txt文件中显示数据。

感谢您的帮助。^^

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

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

在infle.close()之后添加infle.clear()EFF位在FILILL。CULL()之后不被关闭的

< P>添加IfIL.CULL()所清除。EOF位不被关闭

> P>我已经编写了C++代码将近10年。在此期间,我学会了如何以最小化错误数(bug)的方式使用C++。我创建。可能有些人会不同意我的观点,但我建议你只使用for和while来进行循环。永远不要使用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);
   }
}
#包括
#包括
#包括
#包括
int main(int argc,字符**argv)
{
//检查程序参数

如果(ARC<< P>我已经写C++代码将近10年了,在那期间我学会了如何用C++来减少错误的数量(bug)。我创建。可能有些人会不同意我的观点,但我建议你只使用for和while来进行循环。永远不要使用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);
   }
}
#包括
#包括
#包括
#包括
int main(int argc,字符**argv)
{
//检查程序参数


如果(ARGCWork对我来说,关于代码的一些假设没有显示),这意味着我的假设是错误的。请提供一个完整的自包含的测试用例,编译时。在C++中(<.file,EFF))<代码> >(GETLION(…)){}时,尝试“<代码>”几乎是一个坏主意。
。所以,它根本不打印任何内容?它会打印出我文件中的所有内容。只是在do..while循环中不起作用。对于我来说,对你没有显示的代码进行一些假设是有效的,这意味着我的假设是错误的。请提供一个完整的、可以编译的自包含测试用例。执行
几乎总是一个坏主意> C++中的(.file,eof())< /C> >尝试<代码>(GETLIN(…)){}
。所以,它根本不打印任何内容?它会打印出我文件中的所有内容。只是在do..while循环中不起作用。OP可以使用
@Zach中的全局
getline
,啊,是的…这会改变一切。呃..我的文件第一次执行。但是当选项不等于1和2时,文件无法执行ot打开。如果我使用infle.getline(line,limit);这是否意味着我必须计算文件中的字符数?@CN L,不。它将在
\n
或文件结尾处停止。但正如扎克指出的那样,
可能有问题。它是什么类型的?@CN L:那么可能你的文件是空的,或者路径是错误的。OP可能使用了全局
>getline
@Zach中,啊,是的…这会改变一切。呃..我的文件是第一次执行的。但是当选项不等于1和2时,文件无法打开。如果我使用infle.getline(line,limit);这是否意味着我必须计算文件中的字符数?@CN L,不。它将在
\n
或文件结尾处停止。但正如扎克指出的,
可能有问题。它是什么类型的?@CN L:那么可能你的文件是空的,或者路径是错误的。