C ++在for循环中打印文本

时间:2015-05-06 11:04:29

标签: c++ for-loop

我正在从文本文件中读取各行并尝试在命令提示符中将它们打印出来,但文本只是快速闪烁并消失。

我设置为readable.txt

中的行数
cout << "These are the names of your accounts: " << endl;
for (int b = 1; b <= i; b++)
{
    fstream file("readable.txt");

    GotoLine(file, b);

    string line;
    file >> line;

    cout << line << endl;
}   
cin.ignore();                       
break;

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:0)

错误: 在循环中打开一个fstream?那就是自杀,你的fstream总是一样的,为什么你要为每次迭代打开它?

文本可能会消失,因为你的程序到达终点并且自动退出你应该让他在休息之前或者到达结束之前等待

答案 1 :(得分:0)

您不需要每次都重新打开文件并调用<table width="100%"> <tr> <td width="20%"> Left TD <td> <td width="80%"> Datatable </td> </tr> </table> ,您可以在for循环之外打开它并通过GotoLine(file, b);读取字符串。

如果要观看输出,请在for循环后插入std::getline(file, line)。如果要在每行之后暂停输入,请在for循环的末尾插入system("pause")(在其中)

答案 2 :(得分:0)

中断是无意义的(如果片段不在循环或开关中)。 我对消失文本的猜测是对IDE的干扰。在终端/控制台中尝试一下。 和其他答案一样,文件打开应该在循环之外。

#include <iostream>
#include <fstream>

using namespace std;

void GotoLine(fstream &f, int b)
{
    char buf [999];
    while (b > 0) { f.getline (buf, 1000); b--; }
}

int main ()
{
    int i = 5;
    cout << "These are the names of your accounts: " << endl;
    for (int b = 1; b <= i; b++)
    {
        fstream fl("readable.txt");
        GotoLine(fl, b);

        string line;
        fl >> line;

      cout << line << endl;
    }
}

答案 3 :(得分:0)

首先避免在for循环中打开文件。你在这里搞得很多。 试试这段代码

std::ifstream file("readable.txt");
file.open("readable.txt");

if(file.fail())
{
    std::cout << "File cannot be opened" << std::endl;
    return EXIT_FAILURE;
}

std::string line; 

while std::getline(file, line)  // This line allows to read a data line by line 
{
    std::cout << line << std::endl;
}

file.close(); 

system("PAUSE"); // This line allows the console to wait 
return EXIT_SUCCESS;