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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2011, 12:36   #1
Кипящий чайник
Форумчанин
 
Регистрация: 17.12.2009
Сообщений: 101
По умолчанию wchar_t чтение из файла

Прощу прощения, если повторяюсь, но алгоритм, который я использую для чтения/записи из файла для "широких" символьных переменных, не работает так, как для своих "узких" сородичей:

Код:
setlocale(LC_ALL, ".866");

	wchar_t rock[64];

	wofstream o_file("probe.txt", ios);
	if(o_file.fail()){
		wcerr << L"Ошибка открытия файла:" << endl;
		exit(1);
	}
	else{
		o_file << L"Рок-н-ролл жив!" << endl;
		o_file.close();
	}

	wifstream i_file("probe.txt");
	if(i_file.fail()){
		wcerr << L"Ошибка открытия файла:" << endl;
		exit(1);
	}
	else{
		i_file >> rock;
		i_file.close();
	}
	
	wcout << rock << endl;
Прогнал отладчиком - алгоритм выполняется без ошибок, однако в файл, тем не менее, ничего не запиcывается, и, соответственно, не считывается. Даже если я сам впишу в получившийся файл "Рок-н-ролл жив!", то считается неправильно и выведется что-то вроде

ie-i-

И всё. Но вот если я заменю wchar_t на char, а wofstream и wifstream на ofstream и ifstream соответственно, то всё прекрасно заработает!
Кипящий чайник вне форума Ответить с цитированием
Старый 23.04.2011, 20:00   #2
Asdprom
Форумчанин
 
Регистрация: 05.02.2011
Сообщений: 119
По умолчанию

Попробовал откомпилить на VisualStudio, но не пойму:
14 ошибок!
Asdprom вне форума Ответить с цитированием
Старый 23.04.2011, 22:06   #3
Кипящий чайник
Форумчанин
 
Регистрация: 17.12.2009
Сообщений: 101
По умолчанию

А какая у вас версия? У меня Visual C++ 6.0
Кипящий чайник вне форума Ответить с цитированием
Старый 23.04.2011, 22:43   #4
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

русским буквам вполне и 8 бит хватит по-моему
onewho вне форума Ответить с цитированием
Старый 24.04.2011, 13:32   #5
coinkrsk
пыжашийся нуб
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 93
По умолчанию

Код:
wchar_t rock [] = {L"Рок-н-ролл жив!"};
Посмотри под отладчиком че будет в rock.

В тоже время будет работать:
Код:
#include <fstream>

int main ( )
{
	std::wofstream o_file("probe.txt");
	o_file << "Рок-н-ролл жив!" << std::endl;
	o_file.close( );

	return 0;
}
30 секунд поиска находят тебе брата по разуму

Последний раз редактировалось coinkrsk; 24.04.2011 в 13:54.
coinkrsk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
char в wchar_t softrix Общие вопросы C/C++ 5 08.11.2010 15:40
С++ Чтение из файла sir.andrey Помощь студентам 9 15.10.2010 16:00
Преобразование из System::String в wchar_t* AxenicX Общие вопросы .NET 2 16.02.2010 22:31
Чтение файла [Smarik] Помощь студентам 8 28.04.2008 22:15