函数允许单词但不允许短语c ++ [重复]

Posted

技术标签:

【中文标题】函数允许单词但不允许短语c ++ [重复]【英文标题】:Function allows word but not Phrase c++ [duplicate] 【发布时间】:2019-03-22 17:41:28 【问题描述】:

我有一个功能,允许用户输入一个单词或短语,然后将其显示在菜单上,但由于某种原因,它会显示一个单词而不是短语,当我使用多个单词时系统崩溃

我的函数代码的sn-p:

string GetWord(void)
    string localString = "";
    cout<< "please enter a new word or phrase: ";
    cin >> localString;
    return localString;

有谁知道我做错了什么?菜单将显示单个单词,但不会显示两个单词。

【问题讨论】:

【参考方案1】:

std::cin 上的输入运算符 &gt;&gt; 在第一个空格处停止读取,因此只读取一个单词。这是定义的行为。

我假设您想阅读直到用户按下回车键。你想读一行。您可以使用std::getline() 来实现:

std::string GetWordOrPhrase() 
    std::string localString;
    std::cout << "please enter a new word or phrase: ";
    std::getline(std::cin, localString);
    return localString;

顺便说一句:始终在代码中明确使用 std:: 命名空间。不要使用using namespace std 来保留几个字符。 (代码不仅(仅)用于使其与某些编译器一起工作,而且还是软件开发人员之间的一种交流方式。)

【讨论】:

你好,我尝试使用你的方法,但它不允许我使用该功能,只是回到菜单选项。然后我在 getline() 上方添加了一个 void 参数和 cin >> 本地字符串,但这次它只会显示菜单中的第二个单词。

以上是关于函数允许单词但不允许短语c ++ [重复]的主要内容,如果未能解决你的问题,请参考以下文章

保留插入顺序但不允许重复的 STL 容器 [重复]

用空格(或任何字符)将文本单元格拆分为任意数量的单词,重复单词

尽管使用 POST,但不允许使用 Flask- 方法 [重复]

匹配词汇单词和短语

Regular Exp在模式中找到重复短语2顺序单词

golang 一个包内允许有重复的函数吗