选择性填充的向量,其中从源字符串中提取子字符串

时间:2011-07-01 09:44:13

标签: c++ vector char

我有一个char数组,其内容如下所示:

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

正如您所看到的,它是一个典型的空白分隔字符串。我想将所有以字母“I”开头的子字符串放入向量(IVector)中,并按升序对其元素进行排序。同时,我还想将所有以字母“V”开头的子字符串放入另一个向量(VVector)中,并按升序对其元素进行排序。其他(s)(例如本例中的“DO”)将被忽略。

我不熟悉STL算法库。是否有任何功能可以帮助我实现上述工作?

谢谢!

2 个答案:

答案 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::findstd::sort