当我通过引用将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
答案 0 :(得分:0)
问题在于Visual Studio调试器中断点的位置。
return
之后的断点 - &gt;数据大小= 0; screenshot
return
之前的断点 - &gt;数据大小=实际大小。 screenshot