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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2008, 17:29   #1
Алукард Интеграл
Новичок
Джуниор
 
Регистрация: 02.11.2008
Сообщений: 1
По умолчанию Ступор с компилятором

Здравствуйте. Я новичок в С++, поэтому прошу не бить тапками.

Пишу русификатор для коддинга на MVS2005. То есть если это хреновина будет работать, то можно будет выводить на консоль кирилицу без вских дополнительных функций. Делал всё по практикуму Павловской, но от него давно уже нет толку. Почти уже заработало, но выдаёт ошибку доступа к памяти, на "return 0". Не подскажите, если не затруднит, в чём проблема и как это можно решить?
Код:
//CyrIOS.h
#ifndef CYR_IOS_H
#define CYR_IOS_H
 
#include <iostream>
#include <iomanip>
#include <string>
#include <windows.h>
using namespace std;
 
#define MAX_STR_LEN 4096
 
class CyrOstream : public ostream
{
public: CyrOstream(_Uninitialized no_init) : ostream(no_init){}
		CyrOstream& operator << (const char*);
		CyrOstream& operator << (_Myt& (_cdecl * _f)(_Myt&));
 
 
 
private: char buf_[MAX_STR_LEN];
		 char buf2_[MAX_STR_LEN];
 
};
 
extern CyrOstream cout_p;
 
#endif /*Cyr_IOS_H*/
#ifndef CYR_IOS_IMPLEMENETATION
#define cout_p cout
#endif;
 
 
//CyrIOS.cpp
#define CYR_IOS_IMPLEMANTATION
#include "CyrIOS.h"
 
 
CyrOstream &CyrOstream::operator << (const char* s)
{
	int n = strlen(s);
	strncpy(buf_,s,n);
	buf_[n] = 0;
	buf2_[n] = 0;
          CharToOemA(buf_, buf2_);
	cout << buf2_;
	return *this;
}
 
CyrOstream& CyrOstream::operator <<(_Myt& (_cdecl * _f)(_Myt&))
{
	cout<<_f; 
	return *this;
}
CyrOstream cout_p (_Noinit);
 
 
 
///main.cpp
#include "CyrIOS.h"
_Uninitialized a;
 
int main()
{
	CyrOstream cout = a;
	cout<<"Задолбал ваш С++";
	cout<< endl;
	cin.get();
    return 0;
}

Последний раз редактировалось Алукард Интеграл; 03.11.2008 в 10:19.
Алукард Интеграл вне форума Ответить с цитированием
Старый 11.11.2008, 17:33   #2
master1312
 
Аватар для master1312
 
Регистрация: 11.11.2008
Сообщений: 7
По умолчанию

вот вроде рабочий вариант:
Код:
//CyrIOS.h
#ifndef CYR_IOS_H
#define CYR_IOS_H

#include <iostream>
#include <iomanip>
#include <string>
#include <windows.h>
using namespace std;

#define MAX_STR_LEN 4096

class CyrOstream : public ostream
{
public:
	CyrOstream():ostream(_Noinit){;}
	CyrOstream& operator << (const char*);
	CyrOstream& operator <<(_Myt& (_cdecl * _f)(_Myt&));
private:
	char buf_[MAX_STR_LEN];
	char buf2_[MAX_STR_LEN];
};

extern CyrOstream cout_p;

#endif /*Cyr_IOS_H*/
#ifndef CYR_IOS_IMPLEMENETATION
#define cout cout_p
#endif;

//CyrIOS.cpp
#define CYR_IOS_IMPLEMENETATION
#include "CyrIOS.h"

CyrOstream cout_p;

CyrOstream &CyrOstream::operator << (const char* s)
{
	memset(buf_,0,MAX_STR_LEN);
	memset(buf_,0,MAX_STR_LEN);
	int n = strlen(s);
	strncpy(buf_,s,n);
	CharToOemA(buf_, buf2_);
	cout << buf2_;
	return *this;
}

CyrOstream& CyrOstream::operator <<(_Myt& (_cdecl * _f)(_Myt&))
{
	cout<<_f; 
	return *this;
}


///main.cpp
#include "CyrIOS.h"

int main()
{
	cout<<"Задолбал ваш С++";
	cout<<endl;
	cin.get();
	return 0;
}
Я бы изменил этот мир... Но бог не даёт мне исходники...
master1312 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с компилятором, а может и не с ним :( D_bl_M Общие вопросы C/C++ 15 08.11.2007 11:43