-3

ループ内でcin.getline()を使用できませんか?私は次のコードを実行しています:

for(int k=0; k<t; k++)
{
    char ph1[1000], ph2[1000], ph11[1000], ph22[1000][1000];
    int i, j, count = 0;

    cin.getline(ph1, 1000);
    cin.getline(ph2, 1000);
}

このコードは、cin.getline()を介して2つの文字列(またはchar *)を受け入れることになっています。しかし、実行すると、最初の文字列を受け入れ、「NO」を出力して終了します。なんでそうなの?2番目のcin.getline()がスキップされるのはなぜですか?

前もって感謝します。

4

2 に答える 2

0

編集した後でも、サンプルコードはコンパイルされません。周囲のないループmain()です。

私はそれを次のように書き直しました:

#include <iostream>
#include <cstdio>

int main()
{
    char ph1[1000], ph2[1000];

    std::cin.getline(ph1, 1000);
    std::cin.getline(ph2, 1000);

    std::cout << "ph1: '" << ph1 << "' - ph2: '" << ph2 << "'" << std::endl;

    return 0;
}

これは期待どおりに機能します。つまり、認識される問題は「cin.getline()が機能しない」とは関係がなく、投稿したコードでは示されません。質問を閉じるための投票。

于 2012-08-30T13:07:02.423 に答える
0

あなたはこのようなものが欲しいかもしれません:

for (std::string l1, l2;
     std::getline(std::cin, l1) && std::getline(std::cin, l2); )
{
    std::cout << "Your first line: '" << l1
              << "'\nYour second line: '" << l2 << "'\n";
}

ブール値のコンテキストで戻り値がすぐに使用されない入力操作を実行する場合は、常にハードプログラミングおよび論理エラーと見なす必要があります。私の例では、ループの条件チェックは、for2つの連続する行抽出が成功したかどうかをテストし、成功しなかった場合(たとえば、ファイルストリームが最後に到達した場合)、ループは中断します。

于 2012-08-30T13:11:31.857 に答える