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