Я пытаюсь прочитать следующее содержание:
rima doha 44881304 20 30 10 10 20 10102 10102
andrew ny 123456 12 12 13 14 15 01020 03040
и хранить их в отдельных массивах, редактировать их, а затем снова хранить в том же файле.
Вот мой код:
ifstream infile;
infile.open("D:\\customers.txt");
string names[100];
string addresses[100];
int tn[100];
int numCalls[100];
int trunkCalls[100];
int numMobCalls[100];
int isdnNum[100];
int dueD[100];
int paymentD[100];
int numOfPpl = 0;
int numOfPpl = 0;
for(int i=0; i<100; i++){
infile >> names[i] >> addresses[i]>>tn[i]>>numCalls[i]>>trunkCalls[i]>> numMobCalls[i]>> isdnNum[i]>>dueD[i]>>paymentD[i];
numOfPpl++;
}
//Code where some values were edited
ofstream outfile("D:\\customers.txt");
for(int i=0; i<numOfPpl; i++)
{
outfile<<names[i] << "\t" <<addresses[i] << "\t" <<tn[i]<<"\t" <<numCalls[i]<<"\t"
<<trunkCalls[i]<<"\t"<<numMobCalls[i]<<"\t"<<numMobCalls[i]<<"\t"<<isdnNum[i]<<"\t"<<dueD[i]<<"\t"<<paymentD[i]<<endl;
}
outfile.close();
infile.close();
Проблема в том, что первые две строки сохранены правильно, но тогда в файле есть случайные значения. Как это исправить?
Там что-то не так с вашим кодом.
Во-первых, вы дважды объявляете numOfPpl. Избавьтесь от второго счета.
Во-вторых, у вас есть 9 категорий ввода (имена, адреса и т.д.), Но ваш текстовый файл имеет 10 строк. Это отключит всю программу.
Третий вопрос: у вас будет ровно 100 строк в файле clients.txt? Если нет, вы должны использовать команду, чтобы заглянуть в следующую строку, чтобы убедиться, что есть еще одна строка ниже. Использование цикла while или do/while, вероятно, будет лучше, если в текстовом файле не будет 100 строк. Что-то вроде
while(infile){
// retrieve your data
infile.peek();
}
или использование цикла for
for(int i = 0; infile; i++){
// retrieve your data
infile.peek();
}
вероятно, будет лучшим циклом. Опять же, если у вас не будет 100 строк, цикл for даст вам нулевой вывод, потому что в элементы массива не помещаются никакие данные. Я считаю, что это должно исправить ваши проблемы.
Еще одна вещь, за которой вы должны следить, - это дополнительное пространство в конце строки. Это также выведет вашу программу.