Как добавить большой список слов в вектор?

112
09 сентября 2019, 17:40

Нужно добавить большой список слов в вектор.

vector<string> words;

Таким способом получится не очень читабельно:

words.push_back("Word1");
words.push_back("Word2");
words.push_back("Word3");

и т.д.

Стоит поместить это в определенное место в коде или можно как-то подключить файлом?

Answer 1

Вам могут помочь списки инициализации из 11 стандарта.

Если вы пользуетесь 11м стандартом, то можно это сделать так:

std::vector<std::string> words = {  "Word1"
                                  , "Word2"
                                  , "Word3"
                                  , "Word4"
                                  , "Word5"
                                  };

Но лучше поместить все ваши слова в файл (по слову на строке), и сделать функцию, которая прочитает файл и заполнит вектор словами из него

std::vector<std::string> GetWords(const std::string &file_name)
{
    std::ifstream fin(file_name);
    std::string line;
    std::vector<std::string> vec;
    while (std::getline(fin, line))
    {
        vec.push_back(line);
    }
    return vec;
}
int main()
{
    //...
    std::vector<std::string> words = GetWords("words.txt");
    //...
    return 0;
}

Файл со словами (words.txt):

Word1
Word2
Word3
Word4
Word5
READ ALSO
sprintf - формирование нескольких подсрок с использованием одного параметра

sprintf - формирование нескольких подсрок с использованием одного параметра

Подскажите, можно ли реализовать следующую задумку:

92
Ошибка считывания/записи переменной в 3х потоках с использованием atomic и без (с++)

Ошибка считывания/записи переменной в 3х потоках с использованием atomic и без (с++)

У нас есть 2 потока, которые асинхронно записывают в переменную tmp числа 322 и 1337Странность в том, что даже если переменная atomic, условие все-таки...

103
Необычное разбиение строки

Необычное разбиение строки

Имеется программа для разбиения строки по регулярному выражению (парсинг)Программа читает строку из файла, разбивает по ";", вписывает в вектор...

98
Создание метода класса

Создание метода класса

Имеется класс, полем которого является структура, а один из методов это работа с этой структуройПри инициализации метода ругается на неправильное...

125