Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;读取带有数字的文本文件_C++_Io - Fatal编程技术网

C++ C++;读取带有数字的文本文件

C++ C++;读取带有数字的文本文件,c++,io,C++,Io,我有一个包含16行整数的txt文件。每行包含5个整数,这里是文件的前4行 0 0 0 0 123445 5 4 3 2 1 5100100100500 我需要一次读取一行,将所有5个整数存储在一个数组中,然后找到最大值。我一个人可以做得很好。我遇到的问题是,在我读完前一行之后,将转到文件中的下一行 从文本文件中读取第一行 将数字存储在数组中 将数组发送到返回数组中最大整数的函数 将返回的数字放入一个新数组,该数组最终将包含文件所有16行中的最大数字 读取文件的下一行 将具有16 int数组的数组

我有一个包含16行整数的txt文件。每行包含5个整数,这里是文件的前4行

0 0 0 0

123445

5 4 3 2 1

5100100100500

我需要一次读取一行,将所有5个整数存储在一个数组中,然后找到最大值。我一个人可以做得很好。我遇到的问题是,在我读完前一行之后,将转到文件中的下一行

  • 从文本文件中读取第一行

  • 将数字存储在数组中

  • 将数组发送到返回数组中最大整数的函数

  • 将返回的数字放入一个新数组,该数组最终将包含文件所有16行中的最大数字

  • 读取文件的下一行

  • 将具有16 int数组的数组写入文件

  • 我在步骤5中遇到问题。每次我运行代码时,它每次都读取第1行

    #include <iostream>
    #include <fstream>
    using namespace std;
    
    int main()
    {
        int n,i,j;
        int temp[5];
        //ask user
        cout<<"How many lines are in the file\n";
        cin>>n;
        int *array = new int[n];
        //open file
        ifstream inFile;
        inFile.open("input.txt");
    
        for(j=0;j<n;++j)
        {
            for(i=0;i<5;++i)
            {
                inFile >> temp[i];
                cout<<temp[i]<<" ";
            }
            cout<<"\n";
        }
        return 0;
    }
    
    #包括
    #包括
    使用名称空间std;
    int main()
    {
    int n,i,j;
    内部温度[5];
    //询问用户
    coutn;
    int*数组=新的int[n];
    //打开文件
    河流充填;
    infle.open(“input.txt”);
    对于(j=0;j温度[i];
    
    cout好吧,我认为你不需要数组。只要逐行读取,标记它,将每一行静态转换为int(查看0-9范围内的ascii值是否为beingextra,检查是否有负数等),然后直接存储最大值。重复到EOF,你可能会得到最有效的解决方案

    因此,步骤将是

    1) 声明一个临时字符串

    2) 排成一行读

    3) 在空间上标记化

    4) 假设第一个是最大值。继续读取和比较。如果发现较大的值,则交换这些值


    5) 重复到最后,我将使用using一次获取整行,然后解析结果字符串。然后调用getline()同样,等等。虽然我不太清楚为什么你会得到你的确切行为,但你可能没有读到结尾字符。

    你的代码对我来说很好。我相信打开文件时有问题,所以它会一直输出临时[]元素初始化时。在读取时尝试获取填充状态。

    第1行是istream::getline(0)还是(1),或者该函数甚至没有取值?@将签出我链接到的文档页。参数是指向保存输入字符串的字符数组的指针、要读取的最大字符数,以及(可选)你要使用的分隔符。谢谢,但是我真的只是开始C++(我对C有一个体面的理解),我不知道如何分析字符字符串GETLIN给你我的数字。@会。这允许你把C字符串分解成单个数字(然后使用ATOI或某事转换成整数)。。描述有点混乱,但如果你将该示例用作模板,你应该能够使其工作。感谢你的帮助,我可以看到该方法可能会变得更干净,但是你知道有什么方法可以让Infle从ifstream读取下一行吗?这是我已经在做的。在我的最后一个程序中,我不会输出每个n除非我误解了你,否则这就是为什么我要填充>>temp[I];couty你的输出对我来说不是很好的说明-初始temp[]值与第一行的内容类似。尝试将temp[]初始化为{-1},这实际上会显示更多:)UPD:如果修改没有改变任何东西,请向我提供有关您正在使用的平台和开发人员软件的一些信息-这种行为可能很有趣。我删除了temp的初始化,并添加了一个cout\n,以便在终端inst中显示每行各自行的输出ead全部加在一起。输出已更改,但所有16行都显示了这一点,0 1880267544 32654 1我会在一开始就添加一个输出,以确保这些不是temp[]的初始值。然后尝试fscanf()我在temp之后添加了一个cout循环来检查,是的,它们是初始值,所以我想我的问题是它没有正确读取文件?