c ++文本文件重定向getline无限循环

时间:2017-09-12 04:35:49

标签: c++ infinite-loop cin getline

所以我遇到了一个问题,我正在使用cin读取文本文件。以下是我的代码的基本概念:

while(getline(cin,line) {
cout << line << endl;
}
//Do some task
return 0;

我遇到的问题是循环不会终止并且//某些任务永远不会运行。我发现的唯一解决方案是直接查看文本文件,查看有多少行文本,并硬编码条件以摆脱它。所以说我有一个包含5行和一个变量int行的文本文件。然后我会做这样的事情:

  while(getline(cin,line) {
cout << line << endl;
if(row == 5) {
break;
}
//Do some task
return 0;

我尝试使用谷歌搜索,但似乎无法在任何地方找到答案。有任何想法吗?而且我只允许使用的库是iostream。

3 个答案:

答案 0 :(得分:0)

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

int main()
{
    std::string line;
    std::fstream fin;
    fin.open("test.txt");
    while (getline (fin, line))
        std::cout << line << std::endl;
    fin.close();

    //Do smth here

    return 0;
}

答案 1 :(得分:0)

您可以使用rdbuf重定向您的cin输出 以下链接将帮助您。 http://www.cplusplus.com/reference/ios/ios/rdbuf/

答案 2 :(得分:0)

以下代码块可以解决您的问题: 归功于作者:kevinchkin http://www.cplusplus.com/forum/beginner/8388/

#include<iostream>
#include<fstream>

using namespace std;

int main() {

 ifstream myReadFile;
 myReadFile.open("text.txt");
 char output[100];
 if (myReadFile.is_open()) {
 while (!myReadFile.eof()) {


    myReadFile >> output;
    cout<<output;


   }
}
myReadFile.close();
return 0;
}

这是从.txt文件中读取的基本模板。我也想不出你为什么不能使用iostream以外的任何理由。他们制作其他图书馆是因为iostream不是最佳方式。 大多数(如果不是全部)教师/教授,当学生超越班级学习时,我已经喜欢它,并尝试学习更多。 如果您需要其他帮助,请查看:http://www.cplusplus.com/doc/tutorial/files/