Wenn ich eine std::vector<std::string>
durch Verweis auf eine Funktion übergeben, die in den Vektor schreibt, ändert die aufgerufene Funktion den Vektor, aber die aufrufende Funktion sieht die Änderung nicht.C++ - Vektor durch Referenz nicht geändert
Zum Beispiel hat oData
im folgenden Code eine Größe von 20, aber data
hat Größe 0. Warum?
#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;
}
Hinweis: Die Verwendung von Visual Studio 2015 auf 10 Windows-
Es sollte 'ReadFile (" numbers.txt ", Daten);' sein, sonst kann es nicht kompilieren. – songyuanyao
Was Sie gepostet haben, konnte nicht der von Ihnen getestete Code sein. Hier ist der [Visual C++ Online-Compiler-Test] (http://rextester.com/QWO58204) – PaulMcKenzie
Können wir die Frage dann entfernen? –