Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вывод кириллицы в файлы!

4.3K
11 апреля 2007 года
DeFaCe
45 / / 28.08.2005
Пишу небольшоую прогу на MS VC++ 2005 (.NET). Столкнулся с проблемой. Вывожу текстовую инфу, считанную из обычного textBoxa, в файл. Вот основная часть кода этой операции:
 
Код:
FILE *f;
String ^ quection;
f = _wfopen(fileName, L"w");
quection = this->textBox3->Text;
pin_ptr<const wchar_t> vopros = PtrToStringChars(quection);
fwprintf(f,L"%s\n",vopros);

Проверяю... Ввожу в textBox3 значение test123. Все работает, инфа в файл выводится. Но как только ввожу что-то по-русски, например "Проверка", всё также работает, но когда заглядываю в файл, получаю только "????????". В чём дело? Подскажите пожалуйста, как организовать вывод в файлы русских символов?
Может есть какой-то другой способ, может у меня ошибки в коде, а может надо просто что-то добавить!

Заранее очень благодарен!!!
273
12 апреля 2007 года
3A3-968M
1.2K / / 22.12.2005
Нет ничего сложного в этом, главное - подбор кодировки, можно использовать Unicode (желательно) или KOI8-R (нежелательно):
Код:
[SIZE=2][COLOR=#0000ff][FONT=Courier New]#using[/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2][COLOR=#800000]<mscorlib.dll>[/COLOR][/SIZE][/FONT]
 
[SIZE=2][COLOR=#0000ff][FONT=Courier New]using [/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]namespace[/COLOR][/SIZE][SIZE=2] System;[/SIZE][/FONT]
[SIZE=2][COLOR=#0000ff][FONT=Courier New]using [/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]namespace[/COLOR][/SIZE][SIZE=2] System::IO;[/SIZE][/FONT]
[SIZE=2][COLOR=#0000ff][FONT=Courier New]using [/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]namespace[/COLOR][/SIZE][SIZE=2] System::Text;[/SIZE][/FONT]
 
[SIZE=2][COLOR=#0000ff][FONT=Courier New]typedef [/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]wchar_t[/COLOR][/SIZE][SIZE=2]* LPWSTR;[/SIZE][/FONT]
 
[SIZE=2][COLOR=#0000ff][FONT=Courier New]int[/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2] main([/SIZE][SIZE=2][COLOR=#0000ff]array[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]<System::String ^> ^args)[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]{[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]  String^ cyrText = [/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#800000]"Привет, мир!"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New];[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]  StreamWriter^ sw = [/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]gcnew[/COLOR][/SIZE][SIZE=2] StreamWriter([/SIZE][SIZE=2][COLOR=#800000]"Output.txt"[/COLOR][/SIZE][SIZE=2], [/SIZE][SIZE=2][COLOR=#0000ff]false[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New], Encoding::Unicode);[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]  sw->WriteLine(cyrText);[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]  sw->Close();[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]}[/FONT][/SIZE]
4.3K
14 апреля 2007 года
DeFaCe
45 / / 28.08.2005
Огромное спасибо! А вот ещё вопрос, если не сложно: а как мне огранизовать ввод инфы из файла. Но не просто так... Мне необходимо считать из файл определеный фргмент, до символа "|". Затем вывести этот фрагмент на форму в виде Label. Затем опять, опять... Так пока не дойду до конца строки. Затем переехать на начало следующей строки, опять счиать и вываодитиь в те же элементы на форме. Я надеюсь, изложился более-менее понятно....

Заранее благодарю!
273
18 апреля 2007 года
3A3-968M
1.2K / / 22.12.2005
Конечно понятно, вот пример:
Код:
[SIZE=2][COLOR=#0000ff][FONT=Courier New]#include[/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2][COLOR=#800000]"stdafx.h"[/COLOR][/SIZE][/FONT]
[SIZE=2][COLOR=#0000ff][FONT=Courier New]#using[/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2][COLOR=#800000]<mscorlib.dll>[/COLOR][/SIZE][/FONT]
 
[SIZE=2][COLOR=#0000ff][FONT=Courier New]using [/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]namespace [/COLOR][/SIZE][SIZE=2]System;[/SIZE][/FONT]
[SIZE=2][COLOR=#0000ff][FONT=Courier New]using [/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]namespace [/COLOR][/SIZE][SIZE=2]System::IO;[/SIZE][/FONT]
[SIZE=2][COLOR=#0000ff][FONT=Courier New]using [/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]namespace [/COLOR][/SIZE][SIZE=2]System::Text;[/SIZE][/FONT]
 
[SIZE=2][COLOR=#0000ff][FONT=Courier New]int [/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2]main([/SIZE][SIZE=2][COLOR=#0000ff]array[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]<System::String ^> ^args)[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]{[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] StreamReader^ textReader = [/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]gcnew [/COLOR][/SIZE][SIZE=2]StreamReader([/SIZE][SIZE=2][COLOR=#800000]"text.txt"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New], Encoding::Unicode);[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] String^ line = String::Empty;[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff] while[/COLOR][/SIZE][SIZE=2]((line = textReader->ReadLine()) != [/SIZE][SIZE=2][COLOR=#0000ff]nullptr[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New])[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] {[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]   cli::[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]array[/COLOR][/SIZE][SIZE=2]<String ^>^ splittedString = line->Split([/SIZE][SIZE=2][COLOR=#0000ff]gcnew[/COLOR][/SIZE][SIZE=2] cli::[/SIZE][SIZE=2][COLOR=#0000ff]array[/COLOR][/SIZE][SIZE=2]<[/SIZE][SIZE=2][COLOR=#0000ff]__wchar_t[/COLOR][/SIZE][SIZE=2], 1>{[/SIZE][SIZE=2][COLOR=#800000]'|'[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]});[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] }[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] textReader->Close();[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]}[/FONT][/SIZE]

в цикле в массиве splittedString будет находится массив, полученный из строки, разделённой по символам между твоим знаком |
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог