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

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

如您所见,这是一个典型的空白分隔字符串。我想将所有以字母“I”开头的子字符串放入 vector (IVector),并按升序对其元素进行排序。同时,我还想将所有以字母“V”开头的子字符串放入另一个 vector (VVector),并按升序对其元素进行排序。其他(例如,在此示例中为“DO”)将被忽略。

我对STL算法库不熟悉。有什么功能可以帮助我完成上述工作?

谢谢!

最佳答案

您可以使用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对 vector 进行排序,就像@Billy已经指出的那样。您还可以考虑使用std::set,因为这将始终使您的项目排在第一位。

关于c++ - 从源字符串中提取子字符串的选择性填充 vector ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6546284/

10-10 14:25
查看更多