-3
std::vector<std::string>
をベクトルに書き込む関数を参照して渡すと、呼び出された関数はベクトルを変更しますが、呼び出し元の関数は変更を認識しません。参照によって渡されたC++ベクトルが変更されない
たとえば、次のコードでは、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を使用して
'ReadFile(" numbers.txt "、data);'でなければなりません。それ以外の場合はコンパイルできません。 – songyuanyao
投稿した内容は、テストしたコードではありませんでした。ここで[Visual C++オンラインコンパイラテスト](http://rextester.com/QWO58204) – PaulMcKenzie
質問を削除できますか? –