Добавление слов из текстового файла в вектор с ++ - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь добавить каждое слово из файла в вектор, но если я сделаю размер вектора (500) и у меня будет только 20 слов в файле.Размер вектора по-прежнему считается 500. Как я могу это исправить?

Я делаю это плохо?Можно ли сделать это проще?

void loadFile(string fileName)
{
    vector<string> fileContents(500);
    int p = 0;
    ifstream file;
    file.open(fileName);
    if (!file.is_open()) return;

    string word;
    while (file >> word)
    {
        fileContents[p] = word;
        p++;
    }

    for (int i = 0; i < fileContents.size(); i++)
    {
        cout << fileContents[i] << endl;
    }  
}

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Вы также можете использовать более прямой подход, немедленно копируя из входного потока.

std::vector<std::string> loadFile(std::string fileName) {
    std::ifstream file(fileName);
    assert(file);

    std::vector<std::string> fileContents;
    std::copy(std::istream_iterator<std::string>(file), 
              std::istream_iterator<std::string>(), 
              std::back_inserter(fileContents));

    return fileContents;
}
0 голосов
/ 27 ноября 2018

@ drescherjm в комментариях дал мне правильный ответ.

void loadFile(string fileName)
{
    vector<string> fileContents;
    ifstream file;
    file.open(fileName);
    if (!file.is_open()) return;

    string word;
    while (file >> word)
    {
        fileContents.push_back(word);
    }

    for (int i = 0; i < fileContents.size(); i++)
    {
        cout << fileContents[i] << endl;
    }  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...