我有一个char数组,其内容如下所示:
char buffer[] = "I1 I2 V1 V2 I3 V3 I4 DO V4";
正如您所看到的,它是一个典型的空白分隔字符串。我想将所有以字母“I”开头的子字符串放入向量(IVector
)中,并按升序对其元素进行排序。同时,我还想将所有以字母“V”开头的子字符串放入另一个向量(VVector
)中,并按升序对其元素进行排序。其他(s)(例如本例中的“DO”)将被忽略。
我不熟悉STL算法库。是否有任何功能可以帮助我实现上述工作?
谢谢!
答案 0 :(得分: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
,因为这样可以始终将您的商品排序。
答案 1 :(得分:1)
是否有任何功能可以帮助我完成上述工作?
是。请查看std::find
和std::sort
。