如何只用c ++打印字符串的第一个单词

时间:2017-02-02 01:15:42

标签: c++ c-strings

如何将其设置为只读取用户输入的第一个单词,如果他们输入了很多信息?

我不想使用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 个答案:

答案 0 :(得分:7)

试试这个:

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>

答案 1 :(得分:2)

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;