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

时间:2016-06-20 01:36:04

标签: c++ visual-studio vector fstream

当我通过引用将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;
}

注意:在Windows 10上使用Visual Studio 2015

1 个答案:

答案 0 :(得分:0)

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

return之后的断点 - &gt;数据大小= 0; screenshot

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