簡體   English   中英

C ++如何掃描用戶的字符串輸入中的特定單詞?

[英]C++ How can I scan the user's string input for a specific word/words?

#include <regex>
#include <string>
#include <iostream>
int main()
{
    using namespace std;
    string sentence;
    cin >> sentence;
    string word = "banana";
    regex r("\\b" + word + "\\b");
    smatch s;
    if (regex_search(sentence, s, r)) {
        cout << "success" << endl;
    }
}

我得到了部分工作。 我輸入一個包含香蕉一詞的句子,這就是問題所在。 如果我在句子中輸入“ banana”作為第一個單詞,它將檢測到它(例如:banana等),但是如果不是第一個單詞(例如:“ banana”等),它將不會檢測到它。 有解決辦法嗎? 是的,我使用名稱空間是因為它使我的生活更輕松。

“我輸入一個包含香蕉一詞的句子,這就出現了問題。如果我將香蕉作為我的句子的第一個單詞 ,它將檢測到它(例如:banana等),但如果不是第一個單詞(例如:等香蕉),它將無法檢測到。”

擁有的代碼

std::cin >> sentence;

僅從輸入中讀取單個單詞(直到下一個空格分隔符)。

“有解決辦法嗎?”

當然:如果您想從輸入中獲取整個句子,則可以使用

std::getline(std::cin,sentence);

還要注意,在這種簡單情況下使用std::regex()實在太繁瑣了。 如果您真的只想查找諸如"banana"類的簡單序列而不是模式,則std::string::find()會很好地為您服務(成本要低得多)。


“是的,我正在使用名稱空間,因為它使我的生活更輕松。”

最后,它不會使您的生活更輕松,而相反。 您很容易在代碼中與std名稱空間發生沖突(例如,考慮一下min()max()swap()等用戶定義的函數)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM