Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> std::basic_istream. Как ВЕСЬ поток заставить, добавлять символ разд. после вставки 
:(
    Опции темы
np9mi7
  Дата 30.6.2005, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: 5
Всего: 10



ДОбрый день

Есть код:
Код

#include <fstream>
int main(int argc,char* argv[])
{
    // ----------------------------------------------
    std::fstream iFile(argv[1]);
    // ----------------------------------------------
    iFile<<2<<3<<std::flush;
    // ----------------------------------------------
    return 0;
}


Результат выполнения:
Цитата

23


Хочеться при вставке в поток иметь следующий вывод:
Цитата

2 3


Причем без:
Код

iFile<<2<<' '<<3<<' '<<std::flush;


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

Заранее благодарен за ответы.


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
bel_nikita
Дата 30.6.2005, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



а так сделать не пробывал?:
Код

#include <fstream>
std::fstream& operator << (std::fstream& stream, int data)
{
  stream<<data<<' ';
  return stream;
}

int main(int argc,char* argv[])
{
    // ----------------------------------------------
    std::fstream iFile(argv[1]);
    // ----------------------------------------------
    iFile<<2<<3<<std::flush;
    // ----------------------------------------------
    return 0;
}


З.Ы.: за правильность не ручаюсь smile


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
np9mi7
  Дата 1.7.2005, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: 5
Всего: 10



Хочеться стандартными методами, те библиотечными...
К томуже, в текущий момент в потоке символом разделителем может быть не пробел, а что нибудь ещё smile , в любом случае мне этот вариант не нравиться, уж слишком он исскуственен и не красив (на мой ламерский взгляд - без обид);


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
chaos
Дата 1.7.2005, 06:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



ну ну попробуй тогда использовать

setf(long[s])
fill(char);
width(int);

PM WWW   Вверх
comcon1
Дата 1.7.2005, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: 12
Всего: 17



Вообще посмотри функции <iomanip.h>. Там ты легко сможешь несколько чисел, к примеру, выводить ровно одно под другим. Выравнянных по правому/по левому.
Есть, например функция setw(int) - она задает ширину поля, в который будет "тыкаться" число, функция setprecision(int) - скока точек после запятой, манипулятор fixed - фиксирует точку во float-е.
Ну и самая богатая setiosflags(здесь имя флагa ios_base::"че-то").
Кроме того, еще удобнее - это перевод форматированного вывода (как printf) в stream-форму, что сделано в библиотеке boost-а. Зайди на solarix.ru там описание этой библиотеки, вроде как переведено. Там ты выводишь что-то вроде:
Код

outFile << 5%d << 4%d << _int1 << _int2 << endl;

В общем, как в printf-е, тока круче smile , ибо в стриимах.


--------------------
PM MAIL   Вверх
np9mi7
  Дата 5.7.2005, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: 5
Всего: 10



Спасибо за ответы, друзья! Но... smile
Не даром тема названа: Как ВЕСЬ поток заставить, добавлять символ разд. после вставки
setw(int), setprecision(int) - после вставки сбрасвают настройки на те которые были перед их использованием, так что каждый раз перед вставкой придеться определять её формат (ну это не касается системы счисленя, я не умничаю, в этом и есть сложность, как определить формат на всю вставку в поток, а не на каждый кусочек - это я знаю).
Те хочеться задекларировать - вставляй после каждой вставки символ разделитель,
Цитата
setiosflags(здесь имя флагa ios_base::"че-то")

и всё - я и спрашиваю - каким флажком это делать, потому как сам ничего по этому поводу не нашел... smile


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0602 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.