исправить ширину столбца в файле .txt с помощью С++

я создал один класс врача и хочу вставить данные врача в файл блокнота (Doctor.txt), но данные не имеют симметрии, потому что в строке нет фиксированной длины моих входов...

        int DocID;
        string Name,Department,Specification,Address,PhNo ;
        Doctor D;
        ofstream myfile;
        myfile.open ("Doctor.txt",ios::app);
          cout<<"please enter doctor ID: ";
          cin>> DocID;
          cout<<"please enter doctor Name: ";
          cin>> Name;
          cout<<"please enter doctor Department name: ";
          cin>> Department;
          cout<<"please enter doctor specification: ";
          cin>> Specification;
          cout<<"please enter doctor Address: ";
          cin>> Address;
          cout<<"please enter doctor Phone Number: ";
          cin>> PhNo;

          D.set_data(DocID,Name,Department,Specification,Address,PhNo);
          myfile <<endl<<D.get_DocID()<<"  "<<D.get_Name()<<" "<<D.get_Department()<<" "<<D.get_Specification()<<" "<<D.get_Address()<<" "<<D.get_PhNo();
          myfile.close();

как я могу создать симметричный файл .txt, используя фиксированную ширину столбцов входных данных


person Anwar Ali    schedule 30.09.2015    source источник
comment
Если ваш файл Doctor.txt длинный, не рекомендуется читать каждую запись в нем, переформатировать запись и записывать ее снова. Итак, если бы я был вами, моя главная проблема не была бы в записях фиксированной длины. Что было бы, если бы в имени врача был пробел? потому что вы используете пробел для разделения переменных. Это вызывает путаницу.   -  person jnbrq -Canberk Sönmez    schedule 30.09.2015
comment
На ум приходит использовать базовую математику ... хотя вы также можете изучить манипуляторы ввода-вывода. Тем не менее, у jnbrq есть смысл - вам, вероятно, следует отображать правильный, правильно сформированный CSV, если вы хотите, чтобы ваш формат имел какое-либо реальное практическое применение.   -  person Lightness Races in Orbit    schedule 30.09.2015
comment
@jnbrq-CanberkSönmez, как будут обрабатываться пробелы?.. Я думаю, было бы лучше ввести - вместо пробелов между записями.   -  person Awais Mahmood    schedule 30.09.2015
comment
Вы можете использовать ‹iomanip›. см. это. Это уже решает вашу проблему.   -  person Awais Mahmood    schedule 30.09.2015
comment
@AwaisMahmood Есть некоторые непечатаемые символы, например \a. Этот символ, возможно, не будет указан ни для какого поля данных. Таким образом, вы можете рассмотреть возможность использования их вместо пробела.   -  person jnbrq -Canberk Sönmez    schedule 30.09.2015


Ответы (1)


Возможно, вы ищете функцию манипулятора ширины setw, предоставленную <iomanip> заголовочным файлом, и использовали ее до или после или как вы хотите записать каждую запись в файл.

person cpx    schedule 30.09.2015