2011-07-01 43 views
2

提取我有一個字符數組,其中的內容看起來像下面的字符串:選擇性填充向量與從源字符串

char buffer[] = "I1 I2 V1 V2 I3 V3 I4 DO V4"; 

正如你可以看到,這是一個典型的空格分隔字符串。我想將所有以字母「I」開頭的子字符串放入一個向量(IVector)中,並按升序對其元素進行排序。同時,我還希望將以字母「V」開頭的所有子字符串放入另一個矢量(VVector)中,並按升序對其元素進行排序。其他(如本例中的「DO」)將被忽略。

我不熟悉STL算法庫。有什麼功能可以幫助我實現上述工作嗎?

謝謝!

+0

請不要使用html標籤格式化您的問題。使用編輯欄上方的按鈕。 –

+0

如果您不熟悉STL http://www.digilife.be/quickreferences/QRC/STL%20Quick%20Reference%201.29.pdf – jmsu

+0

jmsu,您可能會覺得這很有幫助,感謝您的超鏈接。 – GoldenLee

回答

2

您可以在所有子使用std::istream_iterator<std::string>迭代:

std::stringstream s(buffer); 
std::istream_iterator<std::string> begin(s); 
std::istream_iterator<std::string> end; 
for(; begin != end; ++begin) { 
    switch((*begin)[0]) { // switch on first character 
     // insert into appropriate vector here 
    } 
} 

然後你可以用std::sort到向量進行排序,如@Billy已經指出。你也可以考慮使用std::set,因爲這將始終保持你的物品排在第一位。

+0

謝謝你,Space_C0wb0y。當我編譯你的代碼片段時,發生以下錯誤:1> f:\ Test \ test.cpp(74):error C2676:binary'[':'std :: istream_iterator <_Ty>''未定義此運算符或轉換爲預定義的運算符可接受的類型 1>與 1> [ 1> _Ty = std :: string 1>] – GoldenLee

+0

@Golden:修復了這個問題,查看我的更新答案。 –

+0

謝謝你,Space_C0wb0y。它現在有效。 – GoldenLee

1

是否有任何功能可以幫助我實現上述工作?

是的。看看std::findstd::sort

+0

Billy ONeal先生。謝謝!我會谷歌這兩個功能,並嘗試用它們來完成我的工作。 – GoldenLee