通过引用传递的 C++ 向量未修改

C++ vector passed by reference not modified

当我通过引用将 std::vector<std::string> 传递给一个写入向量的函数时,被调用函数修改向量但调用函数看不到修改。

例如,在下面的代码中,oData 的大小为 20,而 data 的大小为 0。为什么?

#include <iostream>
#include <fstream>
#include <string>
#include <vector>

bool ReadFile(const std::string & iFile, std::vector<std::string> & oData) {

    std::ifstream myfile(iFile);

    if (!myfile.is_open()) {
        std::cout << "Unable to open file";
        return false;
    }
    else {
        std::string line;
        while (getline(myfile, line)) {
            std::cout << line << '\n';
            oData.push_back(line);
        }
        myfile.close();
    }
    return true;
}

int main() {
    std::vector<std::string> data;
    ReadFile("numbers.txt", data);

    return 0;
}

注意:在 Windows10

上使用 Visual Studio 2015

问题出在 Visual Studio 调试器中的断点位置。

return 后的断点 --> 数据大小 = 0; screenshot

return 之前的断点 --> 数据大小 = 实际大小。 screenshot