我一直在處理C++字符串,目前我想知道如何拆分字符串的文章以及剩下的數據。C++分割字符串?
比方說,我有這樣的字符串:
a gold coin
如何我可以分割文章在這種情況下是一個到一個單獨的字符串,然後讓所有的其他數據內容成不同的字符串,在這種情況下是金幣?
請注意,文章有時可能是和有時並沒有文章。
編輯 我不是試圖從空間令牌拆分字符串我從字符串分割的特殊字詞在條件提取代詞項目名稱和代名詞字符串。
我一直在處理C++字符串,目前我想知道如何拆分字符串的文章以及剩下的數據。C++分割字符串?
比方說,我有這樣的字符串:
a gold coin
如何我可以分割文章在這種情況下是一個到一個單獨的字符串,然後讓所有的其他數據內容成不同的字符串,在這種情況下是金幣?
請注意,文章有時可能是和有時並沒有文章。
編輯 我不是試圖從空間令牌拆分字符串我從字符串分割的特殊字詞在條件提取代詞項目名稱和代名詞字符串。
我假設OP想要兩個結果字符串。 – 2014-10-10 01:31:04
我的做法是:
std::string maybe_article = input.substr(0, input.find_first_of(" \t"));
if (maybe_article == "a" or maybe_article == "the" or maybe_article == "the")
return input.substring(input.substr(input.find_first_not_of(" \t", maybe_article.size())));
return input;
這是可能避免的maybe_article
分配,但如果你限制自己的標準庫,這是最明顯的方式,並且很容易修改,以支持計數到位的文章。
個人我放棄std::string
並寫我自己的。
你會總是有一個簡單的[文章] [名詞]佈局,還是你需要解析複雜的句子? – 2014-10-10 01:31:35
我很想寫一個答案,但我更新了我的系統,它把所有東西都寫完了。看看std :: string :: substr()。你可以檢查mystring.substr(0,3)==「an」|| mystring.substr(0,2)==「a」。如果你匹配,第二種情況下mystring.substr(3)第一種情況下的mystring.substr(4)應該給你剩下的字符串。 – 2014-10-10 01:31:47
http://www.cplusplus.com/reference/string/string/substr/ – 2014-10-10 01:32:48