Редактировать текстовый файл в C ++

0

Я пытался отредактировать определенное значение внутри текстового файла через 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 ;
  }
};
  • 0
    Пожалуйста, отформатируйте код так, чтобы его было легче читать - никто не любит читать неформатированный код.
  • 0
    извини но я не знаю как ??
Теги:
arrays
file
edit

1 ответ

0
Лучший ответ

Пункт 1:

while(!myfile.eof())
{
  myfile >> array1[i];
  i++;
}

Лучший способ:

while( i < arraysize && myfile >> array1[i])
{
  i++;
}

Пункт 2:

while (x<= arraysize){

Измените <= на < потому что array1[arraysize] недоступен для доступа.

Пункт 3:

Также IMO вы должны удалить эту проверку во время записи в файл.

while (array1[nm]!= EOF){ // remove it.

Вместо:

while (nm < arraysize) { // not <=
 myfile << array1[nm];
 nm++;
}
  • 0
    Я попробую, спасибо
  • 0
    извините, но это все то же самое, я изменил на то же самое, что и ваш
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню