c++ - 将文本文件中的单词添加到 vector C++

标签 c++ list c++11 vector

我正在尝试将文件中的每个单词添加到 vector 中,但是如果我将 vector 的大小设置为 (500),并且文件中只有 20 个单词。 vector 的大小仍然被认为是 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;
    }  
}

最佳答案

您还可以使用更直接的方法,立即从输入流中复制。

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;
}

关于c++ - 将文本文件中的单词添加到 vector C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53490887/

相关文章:

c++ - 生成 float 随机数

java - java中将ResultSet转换为HashMap的List

python - 从数组中删除列表符号

c++ - 我应该多久重新播种一次 C++?

C++ atomic_flag 查询状态

c++ - boost multi_index 获得依赖类型

c++ - 如何解决DXGI_FORMAT兼容性问题?

python - 如何删除 Python 列表中每个字符串元素的一部分?

c++ - 为什么 sizeof(std::mutex)==40 (gcc,clang,icc)?

c++ - unique_ptr 所有权语义