2014-10-10 116 views
0

我一直在處理C++字符串,目前我想知道如何拆分字符串的文章以及剩下的數據。C++分割字符串?

比方說,我有這樣的字符串:

a gold coin 

如何我可以分割文章在這種情況下是一個到一個單獨的字符串,然後讓所有的其他數據內容成不同的字符串,在這種情況下是金幣

請注意,文章有時可能是有時並沒有文章。

編輯 我不是試圖從空間令牌拆分字符串我從字符串分割的特殊字詞在條件提取代詞項目名稱和代名詞字符串。

+0

你會總是有一個簡單的[文章] [名詞]佈局,還是你需要解析複雜的句子? – 2014-10-10 01:31:35

+1

我很想寫一個答案,但我更新了我的系統,它把所有東西都寫完了。看看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

+0

http://www.cplusplus.com/reference/string/string/substr/ – 2014-10-10 01:32:48

回答

1

您可以使用

.replace

str.replace(str.begin()+1,str.end()1,1,''); 

the reference

+3

我假設OP想要兩個結果字符串。 – 2014-10-10 01:31:04

1

我的做法是:

  1. 找到的第一個字的結尾:如果std::string maybe_article = input.substr(0, input.find_first_of(" \t"));
  2. 檢查它的一篇文章:if (maybe_article == "a" or maybe_article == "the" or maybe_article == "the")
  3. 如果是這樣,走子。 return input.substring(input.substr(input.find_first_not_of(" \t", maybe_article.size())));
  4. 否則,只返回原始字符串。 return input;

這是可能避免的maybe_article分配,但如果你限制自己的標準庫,這是最明顯的方式,並且很容易修改,以支持計數到位的文章。

個人我放棄std::string並寫我自己的。