0

たとえば、次のコードがあります。

string str;
int i;
cout<<"input:";
cin>>str;
cout<<"integer:";
cin>>i;

このコードには実際には何の問題もありませんが、「input」のコマンドプロンプトにテキストを貼り付けると、コピーされたテキストの一部が自動的に「integer」に入力されます。どうすればこれを解決できますか?

編集:テキストを好きなだけ入力できますが、テキストをコピーするとうまくいきません。どうしてか分かりません。

4

2 に答える 2

3

あなたのテキストには空白が含まれていると思います。したがって、std::cinここでは機能しません。std::getline代わりに使用してください。

std::string str;
std::getline( std::cin, str );

--delimiterの3番目のパラメーターがありますstd::getline。デフォルトでは、改行文字です。


テキストに改行文字が含まれている場合、これは機能しません。2つのオプションがあります:

  • 区切り文字として使用できる一意の文字を見つけて、の3番目のパラメーターとして渡します。std::getline
  • std::getlineユーザー入力()から(を使用して)行ごとに読み取りstd::cin、テキストがどこで終了するかをプログラムに通知する特別な文字列を探します。integerがどこから始まるかを知る他の方法はありません(テキストが固定サイズでない限り、私はそれを疑っています)
于 2012-08-06T10:10:21.303 に答える
0
string str;
int i;
cout<<"input:";
getline(cin, str); 
// you want to read the whole line, operator>> will read until whitespace
cout<<"integer:";
cin>>i;
于 2012-08-06T10:10:19.150 に答える