web-dev-qa-db-ja.com

文字列の最初の単語のみをC ++で出力する方法

ユーザーが多くの情報を入力した場合、ユーザーが入力した最初の単語のみを読み取るようにこれを設定するにはどうすればよいですか?

情報が多すぎたため、新しい情報の入力を要求するif-elseステートメントは使用したくありません。

基本的に、最初の単語以降のすべてを無視し、入力された最初の単語のみを印刷します。これも可能ですか?

const int SIZEB = 10;
char Word[SIZEB];
cout << " Provide a Word, up to 10 characters, no spaces. > " << endl;
cin.getline(Word, SIZEB);
cout << " The Word is: " << Word << endl;
cout << endl;

[〜#〜]更新[〜#〜]

それはcstringである必要があります。これは私が学校のために取り組んでいるものです。私は一連の質問をし、その答えを最初のラウンドでcstringとして保存しています。次に、それらを文字列として格納する2番目のラウンドがあります。

6
Katie Stevers

これを試して:

const int SIZEB = 10;
char Word[SIZEB];
cout << " Provide a Word, up to 10 characters, no spaces. > " << endl;
cin.getline(Word, SIZEB);

std::string input = Word;
std::string firstWord = input.substr(0, input.find(" "));

cout << " The Word is: " << firstWord << endl;
cout << endl;

あなたがする必要があります:

#include <string>
8
Wagner Patriota
std::string Word;
std::cout << "Provide a Word, up to 10 characters, no spaces.";
std::cin >> Word;

std::cout << "The Word is: " << Word;

10文字未満にする必要がある場合は、必要に応じて文字列を切り捨てることができます。 Cスタイルの文字列、配列などの理由はありません。

"c文字列を使用する必要があります。"ため息...

char Word[11] = {0}; // keep an extra byte for null termination
cin.getline(Word, sizeof(Word) - 1);

for(auto& c : Word)
{
    // replace spaces will null
    if(c == ' ')
       c = 0;
}

cout << "The Word is: " << Word << endl;
3
Chad