как записать русский текст в файл?
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
нужно записать текст из строки в файл. но текст может быть русским. как это сделать?(CStdioFile)
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
в чём проблема? что не работает?
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
ну для того чтоб можно было записать русский текст нужно как то там поменят кодировку или ещё что то такое. так вот мне нужно узнать как это сделать.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Попробуй сначала просто записать русский текст в файл. Если возникнет проблема, тогда пиши сюда
А то получается, что ты где-то слышал, что когда-то кто-то сталкивался с проблемой кодировки и потому даже не пытаешься попробывать сделать обычный write 


Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
блин да если бы я не столкнулся с проблемой я бы не спрашивал.
естесно я попробовал. и он вместо русского текста пишет абсолютно ничего. получаеться пустой файл.
естесно я попробовал. и он вместо русского текста пишет абсолютно ничего. получаеться пустой файл.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Ничего себе. Всегда думал, что проблемы с кодировкой порождают иероглифы, вместо определенного диапазона символов. А у тебя вообще ничего не записывается. Круто. Подозреваю, что просто не правильно используешь методы класса. Советы такие.
1. Попробуй заменить русский текст на английский, более ничего в коде не трогая. Пишет?
2. Если пишет, то кидай сюда кусок кода, где объект типа CStdioFile создаётся, инициализируется и происходит запись, посредством его методов. Будем разбираться.
А вообще самое правльное в таком случае - подэбажить внутрь метода WriteString (надеюсь используешь именно его) и посмотреть что там происходит.
1. Попробуй заменить русский текст на английский, более ничего в коде не трогая. Пишет?
2. Если пишет, то кидай сюда кусок кода, где объект типа CStdioFile создаётся, инициализируется и происходит запись, посредством его методов. Будем разбираться.
А вообще самое правльное в таком случае - подэбажить внутрь метода WriteString (надеюсь используешь именно его) и посмотреть что там происходит.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
1 с англ. текстом пашет.
2
CStdioFile f;
f.Open(L"E:\\курсовик\\HWM\\debug\\Files\\print.hwm", CFile::modeCreate|CFile::modeWrite);
f.WriteString(print);
в строке print все хорошо. тоесть проблема именно с русскими символами. в строке они хранятся а вот в файл не записываются.
попробую попозже под дебагом посмотреть внутри WriteString только знать бы ещё что смотреть...
2
CStdioFile f;
f.Open(L"E:\\курсовик\\HWM\\debug\\Files\\print.hwm", CFile::modeCreate|CFile::modeWrite);
f.WriteString(print);
в строке print все хорошо. тоесть проблема именно с русскими символами. в строке они хранятся а вот в файл не записываются.
попробую попозже под дебагом посмотреть внутри WriteString только знать бы ещё что смотреть...
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Смотреть следует каждый параметр, который учавствует в каждом операторе . Наверняка очень быстро обнаружишь ошибку. Кстати, print, это что? Какого типа переменная? Дело может быть именно в ней, следовательно особенное внимание удели тому, как происходит передача параметра в метод WriteString.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
print это CString
Когда писал проги в консоле мы использовали функцию CharToOem для вывода русского текста с помощью cout
здесь попробовал. она работает но возвращает непонятные символы. короче не знаю что делать. Может кто сталкивался с проблемой.... подскажите...
Когда писал проги в консоле мы использовали функцию CharToOem для вывода русского текста с помощью cout
здесь попробовал. она работает но возвращает непонятные символы. короче не знаю что делать. Может кто сталкивался с проблемой.... подскажите...
Код: Выделить всё
#include <locale.h>
LPCTSTR lpsz = _wsetlocale(LC_CTYPE , _T("rus"));
if (!lpsz)
AfxMessageBox(L"error set russian .. ");