-1

テキスト ファイルでは、最初の 8 行はテキストであり、これは必要ないため、テキスト ファイルを読み取る前にvector... カウントを行いたいので、基本的には 9 行目からファイルの読み取りを開始します。

if (myfile.is_open())
{
    while ( getline(myfile, line) )
    {
        if count > 8;
        istringstream buffer(line);
        int x, y; 
        if (!(buffer >> x >> y));

        Station objName = {x, y};
        data_station.push_back(objName);
        count == count +1;
    }
}

これは私がやろうとしていることですが、カウントを整理することはできません。

4

3 に答える 3

6

これは代入ではありません:

count == count +1;

countしかし、の値が決して変更されないことを意味する等値チェックです。への変更:

count++;

また:

// See comment from rhalbersma.
++count;

後ろにセミコロンもあります (かっこがないことは言うまでもありません)。

if count > 8;

への変更:

if (count > 8)
{
    istringstream buffer(line);
    int x, y; 
    if (buffer >> x >> y) // Correction here also.
    {
        Station objName = {x, y};
        data_station.push_back(objName);
    }
}
于 2013-04-04T09:31:23.057 に答える
1

まず、等しいかどうかをテストするのではなく、代入を使用する必要があります。

count = count + 1;
//    ^ here

ただし、これは次のようにもっと簡潔に書くことができます。

count++;

また、ifステートメントの構文では、条件を括弧で囲む必要があることに注意してください。多くのステートメントを の一部としてグループ化するにはif、 と でブロックを導入し{ます}

if (condition) {
  block of statements
}

したがって、コードは次のようになります。

if (count > 8) {
  istringstream buffer(line);
  int x, y; 
  if (!(buffer >> x >> y)) {
    Station objName = {x, y};
    data_station.push_back(objName);
  }
}

ifまた、その内面の状態が逆になっているようにも見えます。抽出が成功したときにブロックを実行する必要があります。

if (buffer >> x >> y)
于 2013-04-04T09:33:31.130 に答える