首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++编程I/O

C++编程I/O
EN

Stack Overflow用户
提问于 2016-09-08 09:27:34
回答 1查看 107关注 0票数 0

我试图从包含1000条记录的文本文件中获取输入。

  • 10
  • 一千一百
  • 2 101
  • 3 123
  • 4 124
  • 一千零一二三四

我使用下面的代码接受三个变量d=10 (文本文件的第一行,a包含第一列中的所有数字,b包含第二列中的所有数字)中的输入。

我在这段代码中遇到的问题是,它以文件的后半部分作为输入,而前半部分则被忽略。

产出:

  • 500 3211
  • 501 3212
  • 502 22121
  • 一千零一二三四 char fileName20;cout <<“输入测试文件名:";cin >> fileName;ifstream readFile;//object of input file stream readFile.open(fileName);//打开文件//检查错误如果(readFile.fail()) { cerr <<”错误打开文件“<< endl;} string c,d,a,b;getline(readFile,c);for (int i=0;i<1000;i++) { getline(readFile,readLine);istringstream拆分(ReadLine);getline(拆分,a);getline(拆分,b);cout <

有人能告诉我为什么我要面对这个吗

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-08 11:51:05

更好的办法是:

代码语言:javascript
复制
#include <iostream> // std::cout, std::endl
#include <fstream>  // std::ifstream
using namespace std;

int main()
{
    // open your file
    ifstream input_file("test.txt");

    // create variables for your numbers
    int first_num, left_num, right_num;

    // determine the first number in your file
    input_file >> first_num;

    // while there is a number on the left, put that number into left_num
    while(input_file >> left_num)
    {
        // put the corresponding right number into right_num
        input_file >> right_num;

        // now you can work with them
        cout << left_num << ' ' << right_num << endl;
    }

   // close the file
   input_file.close();

   return 0;
}

编辑:

@Syed这个问题可能是命令行没有足够的缓冲,只是覆盖了之前的500行。只需转到cmd,单击左上角,转到设置、布局和增加缓冲区。代码正常工作,它一定是您的控制台。

另外,由于您使用了包含浮点数的列表,所以您可能需要考虑将left_numright_numint更改为floatdouble

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39387258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档