Выборочно заполненные векторы с подстроками, извлеченными из исходной строки - PullRequest
2 голосов
/ 01 июля 2011

У меня есть массив символов, в котором его содержимое выглядит примерно так:

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

Как вы можете видеть, это типичная пустая строка символов.Я хочу поместить все подстроки, начинающиеся с буквы «I», в вектор (IVector) и отсортировать его элементы в порядке возрастания.В то же время я бы хотел поместить все подстроки, начинающиеся с буквы «V», в другой вектор (VVector) и отсортировать его элементы в порядке возрастания.Другие (например, «DO» в этом примере) будут игнорироваться.

Я не знаком с библиотекой алгоритмов STL.Существуют ли какие-либо функции, помогающие мне достичь упомянутой выше работы?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 01 июля 2011

Вы можете перебрать все подстроки, используя 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 голос
/ 01 июля 2011

Существуют ли какие-либо функции, помогающие мне достичь упомянутой выше работы?

Да. Посмотрите на std::find и std::sort.

...