如何读取txt文件到矢量和计数文件

How to read txt file into vector and cout the file?

本文关键字:文件 txt 何读取 读取      更新时间:2023-10-16
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;

int main()
{
    vector<int> temp;
    ifstream infile;
    infile.open("numbers");
    if (infile.fail())
    {
    cout << "Could not open file numbers." << "n";
    return 1;
    }
    int data;
    infile >> data;
    while (!infile.eof()) {
    temp.push_back(data);
    infile >> data;
    }
    cout << data << " " << endl;

}

我只是想用一个向量从文本文件"数字"中计算出所有的数字。

15
10
32
24
50
60
25

我的经验几乎是零,一些关于为什么不能打开的指导将非常有帮助。

你的代码不工作,因为你没有尝试从矢量打印任何东西?

如何打印矢量?

首先你必须理解如何打印一个向量。代码的最后一行,特别是这一行:

cout << data << " " << endl;

只从文本文件中打印出最后一个整数。在执行输入的循环中,infile >> data覆盖data之前的每个值,并将其赋值给当前从文件中读取的值。结果是,当循环结束时,data将等于最后一次读取的值,特别是25查看您的文件。

operator<<()没有重载,这将允许你做类似cout << temp的事情,尽管你可以自己实现一个。有几种方法可以打印向量,最简单的是一个简单的循环:

for (unsigned i = 0; i < temp.size(); ++i)
    std::cout << temp[i] << " ";

附加:打印所有整数的更快的方法是从循环内部打印data。还有@KerrekSB的答案

你的代码是好的,但你打印错误的东西。将main的底部改为

int data;
while (infile >> data) {
    temp.push_back(data);
}
for( vector<int>::iterator i = temp.begin(); i != temp.end(); i++) {
    cout << *i << endl;
}

试试这个:

#include <fstream>
#include <iostream>
#include <iterator>
#include <vector>
int main()
{
    std::ifstream infile("data.txt");
    if (!infile) { /* error opening file */ }
    for (int n : std::vector<int>(std::istream_iterator<int>(infile), {}))
    {
        std::cout << n << 'n';
    }
}

当然,如果你只想处理数字,你不需要向量:

    for (std::istream_iterator<int> it(infile), end; it != end; ++it)
    {
        std::cout << *it << 'n';
    }