我有一个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;
}
我的问题是什么?对不起,我是编程新手。
答案 0 :(得分:3)
file >> line2;
将停止阅读第一个空格,因此仅读取&#34; 1&#34;因为提取operator >>
使用空格作为分隔符。
您可能希望将getline
用作getline(file,line2)
答案 1 :(得分:2)
输入操作符>>
读取空格分隔字符串,如果您想要阅读整行,则需要使用std::getline
:
std::string line2;
std::getline(file, line);