1

注: これは C++ ですが、C スタイルの文字列を使用しています

こんにちは。

私は割り当てに取り組んでおり、コンソールから入力を取得して cstring に保存する必要があります。すべてが正常にコンパイルされますが、プログラムを実行すると、ユーザーからの入力をスキップするだけです。したがって、「挿入する文字列を入力してください:」と出力され、cin.getline 関数をスキップして、次のコマンドを実行します。

これが私のヘッダー ファイル、cstring の宣言、および問題のあるコード行です。

#include "stdafx.h"
#include <iostream>
#include <cstring>

using namespace std;

int main()
{
  char tempCString[500] = {};

//...code snipit...

  cout << "Enter string to be inserted: " << endl;
  cin.getline(tempCString, 500, '\n'); //I've also tried cin.getline(tempCString, 500);

//...end code snipit...

  return 0;
}

注:「cin >> tempCString」は、最初のスペースまでの入力しか取得できないため、使用できません。改行までのすべての入力をコンソールから取得する必要があります。

ありがとうございました

4

1 に答える 1

2

cin新しい入力を取得する前に、 のバッファをクリアしてみてください:

#include <limits>

cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max());
cout << "Enter string to be inserted: " << endl;
cin.getline(tempCString, sizeof(tempCString), '\n');

cin バッファーをフラッシュするにはどうすればよいですか? を参照してください。

于 2012-03-18T00:58:25.230 に答える