1

私はこれを何をするのかについては何の手がかりもありません

#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!

私はこれを機能させるために非常に多くの方法を試しましたが、それは単に機能しません

4

3 に答える 3

2

readt1.ignore();get()の後にを追加すると、機能するはずです。

  while(readt1.good())
  {
    char cc[128];
    readt1.get(cc,128);
    readt1.ignore(); // <--- add this to ignore newline
    out(cc);
  }

これにより当面の問題は修正されますが、を使用するstd::getlinestd::stringC++の方が優れています。何かのようなもの:

while(std::getline(readt1, line)) {// Do stuff}
于 2012-05-21T05:32:21.763 に答える
1

getline()ifstreamを介して行を読み取るために使用する必要があります

于 2012-05-21T05:27:04.757 に答える
0

また、ループの外側の最初の行を取得します。ループはEOFをチェックして、ファイル全体を取得していることを確認する必要があります。good()は、読み取るファイルがあることを意味しているだけではありませんか?

于 2012-05-21T05:29:32.100 に答える