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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2009, 11:02   #1
regfre
Пользователь
 
Регистрация: 27.01.2009
Сообщений: 46
По умолчанию \CB2src\menu.cpp(1) : error C2018: unknown character '0xef'

Люди помогите.У меня при компилировании фаила вылетает ошибка.
Вернее если текст(тот что выделенны) неизменять то она невылетает а если хть чтото убереш то даже если все как было вернеш он некомпилируется и вот что выдает :
--------------------Configuration: cboby - Win32 Release--------------------
Compiling...
menu.cpp
\CB2src\menu.cpp(1) : error C2018: unknown character '0xef'
\CB2src\menu.cpp(1) : error C2018: unknown character '0xbb'
\CB2src\menu.cpp(1) : error C2018: unknown character '0xbf'
Error executing cl.exe.

cboby.dll - 3 error(s), 0 warning(s)

Вот сам фаил :

Код:
#include <vector>
#include <string>
using namespace std;
#include "menu.h"
#include <fstream>

//========================================================================================
OgcCommandMenu ogcMenu;
typedef OgcCommandMenu::Menu Menu;
typedef OgcCommandMenu::MenuEntry MenuEntry;


//========================================================================================
void getToken(istream& in, string& token)
{
	char ch;
	for(;;){
		in.get(ch);
		if(ch=='\"')
		{
			token.erase();
			for(;;)
			{
				in.get(ch);
				if(!in||ch=='\"') return;
				token+=ch;
			}
		} 
		else if(ch=='{') {token = "{";return;}
		else if(ch=='}') {token = "}";return;}
		//else if(ch=='-') {token = "-";return;}
		if(!in)          {token = "}";return;}
	}
}

//========================================================================================
void extractCommentString(istream& in, string& dest)
{
	dest.erase();
	char ch;in.get(ch);
	while(ch==' ' && ch!='\t')in.get(ch);
	if(ch=='/')
	{
		in.get(ch);
		if(ch=='/')
		{
			while(ch!=0x0D && ch!=0x0A)
			{
				in.get(ch);
				dest+=ch;
			}
		}
	}
}

#include <windows.h>

//========================================================================================
void readMenu(istream& in, Menu* pMenu)
{
	string dummy;
	for(;;)
	{
		getToken(in, dummy);    // " " or }
		if(dummy[0]=='}') { return; } // done with menu

		MenuEntry newEntry;

		getToken(in, newEntry.name    ); // "name"
		getToken(in, newEntry.content ); // "asdf;qqq" or {

		// extract comments
		extractCommentString(in, newEntry.description);

		if( newEntry.content[0]=='{' )
		{
			newEntry.menu = new Menu;
			newEntry.menu->name = newEntry.name;
			newEntry.menu->parent = pMenu;

			pMenu->items.push_back(newEntry);
			readMenu(in,newEntry.menu);
		} else {
			newEntry.menu = 0;
			pMenu->items.push_back(newEntry);
		}
		if(!in) break;
	}
}

//========================================================================================
void OgcCommandMenu::init(const char* filename)
{
	if(baseMenu) return;

	ifstream ifs;
	ifs.open(filename);

	baseMenu = new Menu;
	baseMenu->name = "-=[CB]=-战队菜单";
	readMenu(ifs,baseMenu);
}

Последний раз редактировалось regfre; 06.02.2009 в 16:47.
regfre вне форума Ответить с цитированием
Старый 06.02.2009, 13:55   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

пользуйся тегом code, а то ничего не понятно
Hollander вне форума Ответить с цитированием
Старый 06.02.2009, 16:47   #3
regfre
Пользователь
 
Регистрация: 27.01.2009
Сообщений: 46
По умолчанию

ok/то что выделенно -это и есть то что я хочу изменить
regfre вне форума Ответить с цитированием
Старый 06.02.2009, 17:26   #4
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

опять ты со своими читами? Ну что как детё маленькое? baseMenu->name = "-=[CB]=-战队菜单"; <<-- меняй строку в кавычках и всё, если хочешь изменить
r9m вне форума Ответить с цитированием
Старый 06.02.2009, 17:45   #5
regfre
Пользователь
 
Регистрация: 27.01.2009
Сообщений: 46
По умолчанию

В том то и дело что после этого выдает ошибку.если ее хоть какнибуть измениш.Даже если потом вернеш как было.
regfre вне форума Ответить с цитированием
Старый 06.02.2009, 20:59   #6
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Попробуй
Код:
strcpy(BaseMenu->name, "тут твоя измененная строка");
А вообще поставь кодировку ЮНИКОД. Насколько я знаю иероглифы нельзя в ANSI строки писать.

Последний раз редактировалось MaTBeu; 07.02.2009 в 16:23.
MaTBeu вне форума Ответить с цитированием
Старый 08.02.2009, 01:41   #7
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Да у него уже файл в юникоде (UTF-8, судя по первым байтам EFBBBF), потому компилятор и ругается.

Пересохрани в ANSI-кодировке
пыщь
JTG вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Procedure unknown yulia БД в Delphi 9 26.01.2009 01:33
Popup menu Mitron Компоненты Delphi 1 02.02.2008 14:26
Компилим CPP SunKnight Общие вопросы C/C++ 2 22.01.2008 18:16
Генерация файла с расширением CPP Solan Общие вопросы C/C++ 8 28.09.2007 10:01