В принципе, я не уверен, почему это происходит, но я действительно хочу выяснить это. Это была моя идея, и я пытаюсь заставить ее работать.
Итак, что я пытаюсь сделать: читать строки из файла и сохранять их в массиве.
Но я хотел сделать это:
вместо того, чтобы инициализировать размер массива для некоторого заданного константного числа, я хотел иметь цикл, который сначала считывает количество строк в файле и присваивает это значение переменной. Следовательно, это значение будет размером массива, поскольку это значение будет соответствовать количеству элементов, которые я хочу сохранить в массиве.
Я хочу, чтобы для каждой строки текста в файле, поэтому для каждой строки, был один элемент массива.
Вот код:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main() {
ifstream the_file;
int i, j, z;
string lineCount;
the_file.open("sentence.txt");
j = 0;
while(!the_file.eof())
{
getline(the_file, lineCount);
j++;
}
z = j;
string array[z];
for (i = 0; i < z; i++) {
getline(the_file, array[i]); // Array is empty
cout << i << " " << array[i] << endl;
}
cout << z << endl;
return 0;
}
Итак, после получения этого числа я хочу сохранить элементы в массиве.
В этой части я использовал цикл for, чтобы попытаться это сделать, и выполнял цикл (размер массива - 1) несколько раз, чтобы соответствовать каждому элементу, сохраняемому в одном индексе массива.
Я просто не понимаю, почему после запуска он показывает, что массив пуст. Он показывает, что массив - это размер, соответствующий количеству строк в файле, но, похоже, ни в одном из пространств памяти нет никаких элементов.
Дело в том, что я попытался просто установить массив в заданный постоянный размер. Таким образом, в основном просто читайте элементы из файла и сохраняйте их в массиве, не выполняя этот первый цикл, чтобы определить, какой размер установить в массиве. В этом случае все работает нормально, и все элементы сохраняются в обычном режиме, и ни одно из мест памяти не является пустым.
Но почему я хотел сделать цикл, чтобы получить значение, соответствующее размеру массива, а затем попытаться сохранить эти элементы, как будто файл не читается правильно и назначенные области памяти пусты?
Вот вывод:
/Users/macuser/CLionProjects/PA2supp/cmake-build-debug/PA2supp
0
1
2
3
4
5
Process finished with exit code 0
Вот файл, который я хочу прочитать, это "remace.txt". Как я уже сказал, я хочу, чтобы каждая строка была элементом в моем массиве
This is just one sentence.
This is the second sentence.
This is the third sentence.
This is the fourth sentence.
Fifth sentence right here.
Пожалуйста, не предлагайте использовать вектор, хотя я знаю о некоторых преимуществах с векторами, на самом деле я действительно хочу сделать это с помощью массива.