Задать вопрос
ZolaEk
@ZolaEk
Студентка

Как из строки вывести слова в массив?

Я не могу понять как вывести слова из строки в массив. Для получения слов из строки можно использовать функцию strtok, которая будет читать до пробела или разделителей элементы, и, таким образом, образуя слова, но как переместить их в массив, чтобы слова были отдельными элементами? Есть ли какие-нибудь алгоритмы?
  • Вопрос задан
  • 6528 просмотров
Подписаться 1 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
Пожалуйста, пользуйтесь www.boost.org/doc/libs/1_60_0/doc/html/string_algo...

#include <iostream>
#include <vector>
#include <boost/algorithm/string/join.hpp>
#include <boost/algorithm/string/split.hpp>
#include <boost/algorithm/string/classification.hpp>
#include <boost/range/adaptor/transformed.hpp>

int main() {

    const std::string input_string = "Hello world! String  with    spaces.";

    std::vector<std::string> words;
    boost::split(words, input_string, boost::algorithm::is_any_of(" "), boost::algorithm::token_compress_on);

    std::cout << "{"
              << boost::algorithm::join(words | boost::adaptors::transformed([](auto &s){return "\"" + s + "\"";}), ", ")
              << "}"
              << std::endl;
    return 0;
}
Ответ написан
Комментировать
@abcd0x00
#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    char line[] = "  abc  def, ghi  ";
    char *arr[3];
    char *p;

    p = line;
    for (int i = 0; i < 3; i++) {
        p = strtok(p, " ,");
        if (p) {
            arr[i] = p;
            p = NULL;
        } else {
            break;
        }
    }

    for (int i = 0; i < 3; i++) {
        cout << arr[i] << endl;
    }

    return 0;
}


Вывод
[guest@localhost cpp]$ .iso++ t.cpp -o t
[guest@localhost cpp]$ ./t
abc
def
ghi
[guest@localhost cpp]$
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы