我有一个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/