[英]Edit text File in C++
我試圖通過c ++編輯文本文件中的特定值。 我的方法是將所有文本值復制到數組中,編輯我想要的內容,然后覆蓋舊文件。 一切順利,直到:
int nm=0;
while (nm < arraysize) {
myfile << array1[nm];
nm++;
}
該文件不會更改或添加新值。 這是全部功能
void receptionist::edit_room(int pre1) {
fstream myfile ("booked.txt");
int newroom_num;
cout << "Please Enter The New Room Number You wish : " << endl;
cin >> newroom_num;
const int arraysize=20;
int array1[arraysize];
int i=0;
if(myfile.is_open()) {
while(i < arraysize && myfile >> array1[i]) {
myfile >> array1[i];
i++;
}
myfile.clear();
int x=0;
while (x < arraysize) {
if ( pre1 == array1[x]) {
array1[x] = newroom_num;
break;
}
x++;
}
int nm=0;
while (nm < arraysize ) {
if (array1[nm]> -1) { // this is how i fixed the garbage values
myfile << array1[nm] << endl;
nm++;
}
else {
break;
}
}
myfile.close();
}
else {
cout << "Couldn't Open " << endl ;
}
};
第一點:
while(!myfile.eof())
{
myfile >> array1[i];
i++;
}
更好的方法是:
while( i < arraysize && myfile >> array1[i])
{
i++;
}
第2點:
while (x<= arraysize){
將<=
更改為<
因為array1[arraysize]
超出了訪問范圍。
第三點
此外,IMO在寫入文件時也應刪除此檢查。
while (array1[nm]!= EOF){ // remove it.
代替:
while (nm < arraysize) { // not <=
myfile << array1[nm];
nm++;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.