Я хочу получить ввод нескольких текстовых файлов, используя ifstream, и сохранить его в массиве char * или в векторе.
У меня есть несколько тестовых файлов с именем test1.txt, test2.txt, test3.txt ...
Поэтому я использовал цикл for и установил путь к файлу (строку) как «test» + to_string (i) + «.txt»
Когда я получаю строку ввода из этого текстового файла, используя get line или >>, и печатаю ее для тестирования, текст правильно печатается внутри цикла for. Я сохранил строку в массиве, используя оператор как
"Массив [I-1] = ул;"
и затем, когда я печатаю массив вне цикла for, все выходные данные одинаковы - он печатает строку последнего тестового файла. Я хочу знать, почему это так.
Я пытался изменить массив на векторы, но он работает так же. Если я не использую цикл for и не устанавливаю каждую переменную filePath и string, это работает нормально, но я не думаю, что это хороший способ сделать это более чем в 10 случаях.
int main() {
char* array[10];
char str[100]; //it is for the sample cases I randomly made which does not exceeds 99 chars
for(int i=1; i<10; i++){
string filePath = "Test" + to_string(i) + ".txt";
ifstream openFile(filePath.data());
if(openFile.is_open()){
openFile >> str;
array[i-1] = str;
cout << array[i-1] << endl;
openFile.close();
}
}
cout << array[0] << endl;
cout << array[5] << endl;
cout << array[6] << endl;
//then if I print it here the outputs are all same: string from Test10.
}
например, если test1.txt = "a", test2.txt = "b" ... test9.txt = "i", test10.txt = "j"
внутри цикла for оно напечатано правильно => a b c d ... j.
но вне цикла for вывод всего j.