Есть ли хорошие примеры хорошего использования ввода-вывода в C ++? - PullRequest
2 голосов
/ 27 октября 2009

Я активно занимаюсь вводом / выводом в C ++ (в настоящее время использую его для печати заголовков, таблиц, некоторых выравниваний данных) и удивляюсь, как это правильно / отлично используется в проектах с открытым исходным кодом или в общих примерах / ниппетах

Я пользуюсь такими вещами:

cout.setf(ios::right,ios::jyustified);
cout<<std::setw()

std::copy (vector.begin(), vector.end(), std::osteam_iterator<const Foo *>
              std::cout,"\n");  //provided I have  operator <<  in/for Foo

locale mylocale(""); 
cout.imbue( mylocale );

Мне не нравится моя текущая реализация, так как у меня много принудительных (\t) и spaces для обеспечения правильного отступа. Поэтому я хочу посмотреть, как ввод / вывод используется профессионалами высшего класса.

Ответы [ 3 ]

1 голос
/ 27 октября 2009

Одна вещь, которая чрезвычайно полезна, это библиотека сохранения состояния Boost IO . Это обеспечивает (в частности) чистый способ борьбы с «липкими» флагами.

Однако я склонен согласиться с Дэвидом Сейлером - очень немногие люди будут довольны выводом, который представляет собой чистый текст одним шрифтом и т. Д., Который вы получите, написав только текст. HTML, однако, довольно легко генерировать. RAII, однако, может прекрасно работать с документами с фиксированной структурой, чтобы всегда генерировать правильно вложенные теги.

1 голос
/ 27 октября 2009

Для части вашего вопроса с отступом: концепция «фильтра» (реализованная, например, в библиотеке Boost.IOStreams) довольно полезна и мощна в этом отношении. Для примера, посмотрите этот ответ .

1 голос
/ 27 октября 2009

Если вы хотите отформатировать данные каким-либо простым для чтения способом, рассмотрите возможность создания некоего структурированного формата документа (например, html или pdf) вместо простых текстовых плюс пробелов и табуляции. Эта проблема не специфична для ввода-вывода C ++ и не может быть решена с помощью умного использования <stdio>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...