У меня возникли проблемы с созданием 2D-вектора строки, созданного путем считывания значений из текстового файла. Сначала мне казалось, что мне нужно использовать массив. однако я понял, что вектор будет гораздо более подходящим для того, чего я пытаюсь достичь.Создание 2D String Vector из текстового файла
Вот мой код до сих пор:
Я инициализируется вектор во всем мире, но не дали ему количество строк или столбцов, потому что я хочу, чтобы определить, когда мы читаем файл:
vector<vector<string>> data;
Тестовые данные в файле под названием «тест» в настоящее время выглядит следующим образом:
test1 test2 test3
blue1 blue2 blue3
frog1 frog2 frog3
Я тогда функцию, которая открывает файл и пытается скопировать строки из text.txt к вектор.
void createVector()
{
ifstream myReadFile;
myReadFile.open("text.txt");
while (!myReadFile.eof()) {
for (int i = 0; i < 5; i++){
vector<string> tmpVec;
string tmpString;
for (int j = 0; j < 3; j++){
myReadFile >> tmpString;
tmpVec.push_back(tmpString);
}
data.push_back(tmpVec);
}
}
}
Однако при попытке проверить размер моего вектора в моей основной функции, она возвращает значение «0».
int main()
{
cout << data.size();
}
Я думаю, мне просто нужно пару свежих глаз, чтобы сообщить мне, где я иду не так. Я чувствую, что проблемы лежат в функции createVector, хотя я не уверен на 100%.
Спасибо!
[Пожалуйста, прочитайте почему использование EOF() в цикле не хорошо] (http://stackoverflow.com/questions/5605125/why- is-iostreameof-inside-a-loop-condition-thought-wrong) – PaulMcKenzie
* но не дал ему количество строк или столбцов, потому что я хочу, чтобы это было определено при чтении файла: * - Так почему же вы hard-code '5' и' 3' в вашей функции 'createVector'? – PaulMcKenzie
Спасибо за ваш ответ Пол. Я знаю, что максимальное количество столбцов там будет 3, однако я не знаю количество строк (потому что это то, что может быть изменено другими функциями в программе, т. Е. Добавлять и удалять элементы). – GuestUser140561