Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2012, 23:00   #1
Стремящийся
Форумчанин
 
Аватар для Стремящийся
 
Регистрация: 01.11.2011
Сообщений: 172
По умолчанию Запись в текстовый файл адресов вместо строк

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

Структура
Код:
struct Client
    {
            
        wchar_t strname[100];//ФИО клиента
        wchar_t straddress[50];// название улицы
        int numberinlist;//номер по списку клиента
        int inumberhome;// номер дома
        int numberappartment;// номер квартиры
        int numbercontract;// номер договора
        int ipaket;// номер пакета
        int iDebt;// денежный баланс клиента
        bool isnotconnect;//флаг для определения подключен ли клиент к сети
    };
Если вывожу в Edit все выводится корректно, а когда вывожу в текстовый файл, то вместо строк выводятся адреса. Подскажите, где возможно ошибка.
Считывание из бинарного файла и запись в текстовый файл.
Код:
void CableTV::CatalogOfClient()
{
    ofstream outFileUser ( "Список всех клиентов.txt", ios::out );
    ifstream ClientFile ( "ListOfClients.dat", ios::binary|ios::in);
    ClientFile.seekg( 0 );
    Client client;
    ClientFile.read( reinterpret_cast< char *>( &client ),sizeof( Client ) );
    while ( !ClientFile.eof() )
    {
        if ( client.numberinlist!=0 )
        {
            outFileUser << setw(18) << client.numberinlist << setw(20) << client.strname 
                << setw(12) << client.straddress << setw(14) << client.inumberhome <<
                setw(14) << client.numberappartment << setw(14) << lient.numbercontract<<
                setw(14) << client.ipaket <<setw(14) << client.iDebt<< endl;
        }
 
        ClientFile.read( reinterpret_cast<  char *>( &client ),sizeof( Client ) );
    }
    ShellExecute(0,_TEXT("open"),_TEXT("Список всех клиентов.txt"),0,0,SW_SHOWDEFAULT);
    
}
Заранее спасибо.
Желание тысяча возможностей, нежелание - тысяча причин
Стремящийся вне форума Ответить с цитированием
Старый 09.08.2012, 07:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
wchar_t
Почему не char если не секрет?
Цитата:
wofstream
A type basic_ofstream specialized on wchar_t template parameters.
Понял что использовать нужно?
I'm learning to live...

Последний раз редактировалось Stilet; 09.08.2012 в 07:36.
Stilet вне форума Ответить с цитированием
Старый 09.08.2012, 10:58   #3
Стремящийся
Форумчанин
 
Аватар для Стремящийся
 
Регистрация: 01.11.2011
Сообщений: 172
По умолчанию

Спасибо.
Код:
Почему не char если не секрет?
С ANSI было бы легче, согласен, захотелось попробовать Unicode. Если использую
Код:
wofstream
, то записывает в файл только
Код:
outFileUser << setw(18) << client.numberinlis
, остальное отбрасывается, не знаю почему
Желание тысяча возможностей, нежелание - тысяча причин
Стремящийся вне форума Ответить с цитированием
Старый 09.08.2012, 12:11   #4
Петррр
Форумчанин
 
Аватар для Петррр
 
Регистрация: 02.09.2011
Сообщений: 336
По умолчанию

Выводятся адреса, потому что нет перегруженного оператора для wchar_t*
http://www.cplusplus.com/reference/i...perator%3C%3C/
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
Петррр вне форума Ответить с цитированием
Старый 09.08.2012, 12:25   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

wostream имеет этот оператор.
там проблема с локалями бывает.

у меня был случай что русский текст он напрочь отказался выводить.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.08.2012, 16:05   #6
Стремящийся
Форумчанин
 
Аватар для Стремящийся
 
Регистрация: 01.11.2011
Сообщений: 172
По умолчанию

Всем спасибо! Решил проблему путем перевода Юникод в Анси перед выводом файл
Желание тысяча возможностей, нежелание - тысяча причин
Стремящийся вне форума Ответить с цитированием
Старый 09.08.2012, 18:18   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А может ну его... Юникод в смысле?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.08.2012, 18:28   #8
Стремящийся
Форумчанин
 
Аватар для Стремящийся
 
Регистрация: 01.11.2011
Сообщений: 172
По умолчанию

Привет, Виталик! Призыв хороший, но надо и это знать. Вдруг спросят на собеседовании. Или работать придется с ним. Зато сколько нового узнал и сколько предстоит узнать
Желание тысяча возможностей, нежелание - тысяча причин

Последний раз редактировалось Стремящийся; 09.08.2012 в 18:30.
Стремящийся вне форума Ответить с цитированием
Старый 09.08.2012, 19:21   #9
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А может ну его... Юникод в смысле?
Имхо, лучше ну всякие штуки, которые начинаются на w
Если сделать им ну, и работать с обычными char/string единообразно, то уже не важно будет, юникод там, али где.
_Bers вне форума Ответить с цитированием
Старый 09.08.2012, 19:47   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Имхо, лучше ну всякие штуки, которые начинаются на w
Если сделать им ну, и работать с обычными char/string единообразно, то уже не важно будет, юникод там, али где.
если вам хватает анси, то да.
ибо utf8 виндой не поддерживается.

я отбросил просто некоторые классы из stl, например wstream отпали(что i, что o).
я так и не понял почему он блочит не англ символы...

wstring не помню что там, работает или нет.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запись в текстовый файл. tinton Помощь студентам 5 06.05.2012 16:48
запись в текстовый файл Александра_69 Общие вопросы Delphi 10 04.11.2011 19:29
Запись в текстовый файл С++ Шиншилка Помощь студентам 2 30.10.2011 15:37
Запись в текстовый файл cr1t Общие вопросы Delphi 5 31.07.2010 19:42
Запись в текстовый файл Xardas Общие вопросы Delphi 9 20.01.2008 13:22