1

私はC++を学ぼうとしています。私は今ストリングスにいます。文字列を入力して返すように要求するこの単純なメソッドを作成しました。そのために、cin.getLine()メソッドを使用していますが、cin.getLine()を使用した後、文字列が出力されません。

string getString(char string[])
{

  cout << "Please enter a string to process ";
  cin >> string;
  cout << "String in getString before process: " << string << "\n";
  cin.getline(string, STRINGSIZE);
  cout << "String after processing: " << string << "\n"; // here string is not printed
  return string;
}

誰かが私が間違っていることを理解するのを手伝ってくれますか?ありがとうございました

4

1 に答える 1

2

最初に文字列をstd::stringwithに読み取り、次にwithcin >> string;から何かを再度 読み取る必要はありません。一度読み取って、次のように返します。cincin.getline(string, STREAMSIZE);

string getString(char string[]){
  cout << "Please enter a string to process ";
  cin >> string;
  cout << "String in getString before process: " << string << "\n";
  // process this, do whatever you describe as processing it
  cout << "String after processing: " << string << "\n"; // string is printed
  return string;
 }

それ以外の場合、使用する場合は、次のようgetlineにします。

  std::string name;

  std::cout << "Please, enter your full name: ";
  std::getline (std::cin,name); // or std::getline(std::cin,string, 'r'); to read
  //only to delimiter character 'r'
  std::cout << "Hello, " << name << "!\n";

したがって、覚えておくべきことは、本当に特別な理由がない限り、getlineORを使用することです。両方を同時に使用することはできません。cin

于 2013-03-27T05:54:31.440 に答える