我不知道该怎么做
#include "fstream"
#include "iostream"
using namespace std;
#define out(a) cout << #a << ": " << a << '\n'
void print(string s)
{
cout << s << '\n';
}
int main()
{
ifstream readt1;
readt1.open("test1.yaml");
while(readt1.good())
{
char cc[128];
readt1.get(cc,128);
out(cc);
}
readt1.close();
}
该代码...输出:
cc: version: 0.14.1
cc:
test.yaml就是这个
version: 0.14.1
name: scrumbleship
author: dirkson
description: >
A minecraft like game that allows you
to build your own spaceship!
我已经尝试了很多方法来实现这一点,而它根本就没有
答案 0 :(得分:2)
如果你在get()之后添加readt1.ignore();
,它应该可以工作:
while(readt1.good())
{
char cc[128];
readt1.get(cc,128);
readt1.ignore(); // <--- add this to ignore newline
out(cc);
}
这解决了直接问题,但使用std::getline
和std::string
会更好的C ++。类似的东西:
while(std::getline(readt1, line)) {// Do stuff}
答案 1 :(得分:1)
您应该使用getline()
来读取ifstream
答案 2 :(得分:0)
另外,我会在循环之外得到第一行,并且循环应检查EOF以确保获得整个文件。不好()只是暗示有一个文件要读?