![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 13.09.2019
Сообщений: 119
|
![]()
Здравствуйте, народ
![]() Передо мной тут встала задачка перевести кое-какие древние программки с Fortran-77 на С++. В принципе ничего слишком сложного нет, но там в них довольно специфический вывод данных в файл, и возможно, придется добиваться его полного соответствия. Вот такой пример, например: Код:
|
![]() |
![]() |
![]() |
#2 |
фрилансер, препод.
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,044
|
![]()
archerix, аналог то есть, но не однозначный http://www.c-cpp.ru/content/printf
или с использованием библиотек MFC - CString::Format Qt - QString::arg но, на мой взгляд, наименее мозгодробительным вариантом будет использовать конвертер (из полученного результата выдрать форматирование). В тырнете множество, вот первый попавшийся https://en.wikipedia.org/wiki/F2c |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 13.09.2019
Сообщений: 119
|
![]()
Что-то не доверяю я автоматике
![]() ![]() А библиотеки подключать лишние не очень хочется. З.Ы. Попробовал какой-то автоматический конвертер, он вообще не понял этих форматов ![]() Последний раз редактировалось archerix; 02.01.2020 в 13:37. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 13.09.2019
Сообщений: 119
|
![]()
А как думает общество, что в принципе проще применить в данном случае? Оператор fprintf или ofstream - там ведь тоже можно вроде задавать формат.
Повторюсь - задача стоит в том, чтобы выдать в файл строку, состоящую из чисел и, возможно, текстовой вставки строго так же, как в оригинале. Надо задать общее число цифр числа и знаки после запятой. Вот пример вывода: Код:
Последний раз редактировалось archerix; 02.01.2020 в 13:57. |
![]() |
![]() |
![]() |
#5 |
gamer
Участник клуба
Регистрация: 09.05.2015
Сообщений: 1,549
|
![]()
Б.И. Березин, С.Б. Березин. "Начальный курс C и C++". 1999 г.
Страница 250. Для того, чтобы организовать форматированный ввод и вывод, аналогичный тому, что предоставляют пользователю функции printf () и scanf (), в языке C++ используются два способа. Первый состоит в применении функций - членов класса ios. При втором способе употребляется специальный вид функций, называемых манипуляторами (manipulator). Далее следуют несколько параграфов, посвященных этим вопросам.
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/ В ожидании Кеши... |
![]() |
![]() |
![]() |
#6 |
gamer
Участник клуба
Регистрация: 09.05.2015
Сообщений: 1,549
|
![]()
Состояние правил форматного вывода в поток определяется состоянием флагов форматирования потока. В заголовочном файле iostream.h определено следующее перечисление, задающее флаги форматирования:
enum { ... left = 0x0002 - выравнивание по левому краю ... uppercase = 0x0200 - выдача в формате xx.xxxx Exx ... } Изменить состояние флагов можно функцией: long setf (long flags);
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/ В ожидании Кеши... |
![]() |
![]() |
![]() |
#7 |
gamer
Участник клуба
Регистрация: 09.05.2015
Сообщений: 1,549
|
![]()
Для управления форматом выдачи из потока можно использовать специальные функции, называемые манипуляторами. Стандартными манипуляторами, доступ к которым можно получить, подключив файл iomanip.h, являются:
decl - десятичный формат ... setw (int w) - установить ширину поля выдачи Можно создать свою собственную функцию-манипулятор. Для организации обмена с файлами к программе надо подключить файл fstream.h.
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/ В ожидании Кеши... |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 13.09.2019
Сообщений: 119
|
![]()
Спасибо, изучу
![]() Да, еще забыл написать, что там, где несколько цифр подряд, это вывод массива. В оригинале прямо в операторе вывода, например: Код:
![]() |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 13.09.2019
Сообщений: 119
|
![]()
Стал делать через поток. Получается хитро на вид, но вроде почти работает. Например:
Код:
![]() |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 13.09.2019
Сообщений: 119
|
![]()
Всем спасибо, вопрос решен
![]() ![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
аналог String.Format/sprintf | Пепел Феникса | JavaScript, Ajax | 1 | 14.06.2011 09:51 |
zip format | Jelena | Помощь студентам | 2 | 04.01.2009 18:26 |
Format() | eda | Microsoft Office Excel | 6 | 28.08.2008 11:21 |
Format | malevich | Общие вопросы Delphi | 5 | 31.12.2006 00:37 |