Можно ли обращаться к отдельным элементам в потоке строк в C ++ - PullRequest
0 голосов
/ 31 октября 2018

Я ищу способ адресации отдельных элементов в потоке строки, например, как в массиве, arr[n]. Я понимаю, что могу просто присвоить строку с потоком строк, std::string gets = ss.str() и обратиться к строке, но это кажется противоречивым.

1 Ответ

0 голосов
/ 31 октября 2018

Элементы потока являются отдельными символами и имеют позиции. Однако части потока для чтения и записи являются отдельными (istream против ostream), поэтому вы не можете легко манипулировать содержимым потока. И, как правило, потоки поддерживают чтение / запись один раз, только некоторые потоки могут быть перемотаны.


Я пытаюсь отсортировать отдельные слова в алфавитном порядке в потоке строки, используя цикл for.

Вы можете прочитать все слова в вектор, а затем отсортировать вектор. E.g.:

std::vector<std::string> read_words_and_sort(std::istream& s) {
    std::vector<std::string> v(std::istream_iterator<std::string>{s},
                               std::istream_iterator<std::string>{});
    std::sort(v.begin(), v.end());
    return v;
}
...