Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
#1

Вывод wstring в файл - C++

20.07.2014, 10:23. Просмотров 563. Ответов 7
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
bool addCategory(const std::wstring& name_category)
{
wfstream fio = initAndCheckWFSTREAM(FILENAME_CATEGORY, ios_base::app | ios_base::out); 
// инициализация fio (своя функция с некоторыми особенностями)
 
if (isFileEmpty(FILENAME_CATEGORY))
fio << "[Список категорий]:\n";
 
fio << name_category << "\n"; 
return true;
}
Оператор fio << name_category << "\n" не выполняется, соответственно никакого вывода нет и fio.fail присваивается true. В чем проблема, можно было бы грешить если бы я не создал wstring, wfstream, но по смыслу вроде бы все правильно. Подскажите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2014, 10:23     Вывод wstring в файл
Посмотрите здесь:

Из string в wstring - C++
Как можно получить wstring-строку из string-строки? (символы в строке латинские, поэтому проблем вроде бы возникать не должно)

Конвертирование в wstring& - C++
Всем привет! Не могу понять почему невозможно конвертировать из wchar_t в wstring&amp; Вызов метода client -&gt; CompareTwoString(...

Объединение переменных в wstring - C++
Всем добрый день! Подскажите как собрать, сохранить все значения переменных в строку wstring. А то собираю dll для 1c-ки,а тут одни...

Странное поведение wstring - C++
Всем привет! Ребята, не могу понять такую ситуацию. Вставляю в wstring строку в позицию 0 таким образом ...

wstring to int с делемиттером - C++
Как вытащить из wstring, например такой &quot;333, 555, 666, 777, 888&quot;, инты?

Wstring и файловый поток - C++
Беда за бедой, я уже 2 тему создаю. Короче из-за того, что теперь я использую вместо string Wstring не знаю, как грамотно файловый поток...

преобразование wstring в int - C++
Как преобразовать wstring в int

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.07.2014, 10:40     Вывод wstring в файл #2
Что за initAndCheckWFSTREAM?
В каком состоянии fio.good() после его вызова?
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
20.07.2014, 11:20  [ТС]     Вывод wstring в файл #3
Tulosba,

C++
1
2
3
4
5
6
7
inline wfstream initAndCheckWFSTREAM(const std::wstring &filename,
std::ios_base::openmode mode = ios_base::app)
{
    wfstream f(filename, mode);
    if (!f.is_open()) throw FileNotOpened(filename);
    return f;
}
После вызова функции initAndCheckWFSTREAM fin.good() == true, после попытки вывода name_category fin.good() == false;
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.07.2014, 11:39     Вывод wstring в файл #4
А если закоментировать строки:
C++
1
2
if (isFileEmpty(FILENAME_CATEGORY))
fio << "[Список категорий]:\n";
что-то изменится?
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
20.07.2014, 11:49  [ТС]     Вывод wstring в файл #5
Tulosba, ничего не изменилось.
Эта проблема только с русскими символами. С ASCII символами все работает как надо.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.07.2014, 11:56     Вывод wstring в файл #6
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
Эта проблема только с русскими символами. С ASCII символами все работает как надо.
Ну а если заменить fio на std::wcout вывод на консоль будет? Убрав, конечно, все открытия и проверку на пустоту.
P.S. для строковых литератов добавьте L в начале. Т.е. :
C++
1
fio << L"[Список категорий]:\n";
где есть вывод.
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
20.07.2014, 14:37  [ТС]     Вывод wstring в файл #7
Tulosba,
C++
1
2
setlocale(0, "rus");
std::wcout << L"абвгд";
Вот так выводит в консоль, без локали не выводит ничего, точно такая же ситуация как с выводом в файл.

Добавлено через 2 часа 33 минуты
Нашел кое что интересное:

C++
1
2
3
wofstream b("zzz.txt", ios_base::app);
    b.imbue(locale("rus_rus.1251"));
    b << a;
вот так вывод работает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2014, 17:01     Вывод wstring в файл
Еще ссылки по теме:

Удвоенный двойной слеш в wstring - C++
Здравствуйте. Делаю так: std::wstring s = argv ; s += L&quot; &quot;; s += argv; Получаю слишком много слешей, как с этим...

Конвертация символов в std::wstring - C++
Привет. Помогите пожалуйста, как cконвертировать символы unicode, лежащие в std::wstring, в ANSI Codepage 1251? Добавлено через 1...

Корректен ли каст из string в wstring? - C++
Доброго вечера. Вот кусок кода: template&lt; typename char_type &gt; string_t&lt;char_type&gt; make_string( const...

Из wchar_t* в wstring или в string - C++
Как перевести из wchar_t* в wstring или в string ? Почему столько геморроя со строками... Есть функция, которая принимает wstring и...

Запись и чтение из файла wstring - C++
Всем привет! Ребята, работаю с Юникод и встал вопрос как считать из файла и записать в файл wstring name; Погуглив нашел вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.07.2014, 17:01     Вывод wstring в файл #8
Как вывести в файл строку wstring с кириллицей???
Yandex
Объявления
20.07.2014, 17:01     Вывод wstring в файл
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru