如何阅读特定文件fstream?

时间:2016-04-15 07:11:16

标签: c++

我有一个data.txt文件,其内容是:

[exe1]

1 0 2 9 3 8
----------


[exe2]


----------
10 2 9 3 8:0

我想阅读第2行:1 0 2 9 3 8。但我的输出只有1

我的代码:

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

std::fstream& GotoLine(std::fstream& file, unsigned int num) {
    file.seekg(std::ios::beg);
    for (int i = 0; i < num - 1; ++i) {
        file.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }
    return file;
}

int main() {


        using namespace std;
        fstream file("data.txt");

        GotoLine(file, 2);

        std::string line2;
        file >> line2;

        std::cout << line2;
        cin.get();
        return 0;

}

我的问题是什么?对不起,我是编程新手。

2 个答案:

答案 0 :(得分:3)

file >> line2;将停止阅读第一个空格,因此仅读取&#34; 1&#34;因为提取operator >>使用空格作为分隔符。

您可能希望将getline用作getline(file,line2)

答案 1 :(得分:2)

输入操作符>>读取空格分隔字符串,如果您想要阅读整行,则需要使用std::getline

std::string line2;
std::getline(file, line);