如何定义和取消UNICODE宏

Ultimate_Redx 2014-09-29 03:49:34
已经被UNICODE完败了。。。。
工程的UNICODE是在哪里定义的?有没有显式的代码可以更改?

然后自己定义与取消的UNICODE完全不起作用,况且现在在操作文件,UNICODE更不知道该怎么搞了。
看看这个先,能不能解释一下??
int main()
{
#define _UNICODE
#ifdef UNICODE
cout<<"UNICODE.."<<endl;
#else
cout<<"_UNICODE"<<endl;
#endif

TCHAR ch[20];
for(int i=0;i<19;i++)
ch[i]=cin.get();
cout<<sizeof(ch[0])<<endl;
cout<<sizeof(ch)<<endl;
#undef _UNICODE
}

int main()
{
#define _UNICODE
#ifdef UNICODE
cout<<"UNICODE.."<<endl;
#else
cout<<"_UNICODE"<<endl;
#endif
#undef _UNICODE
TCHAR ch[20];
for(int i=0;i<19;i++)
ch[i]=cin.get();
cout<<sizeof(ch[0])<<endl;
cout<<sizeof(ch)<<endl;
}

int main()
{
#define UNICODE
#ifdef UNICODE
cout<<"UNICODE.."<<endl;
#else
cout<<"_UNICODE"<<endl;
#endif

TCHAR ch[20];
for(int i=0;i<19;i++)
ch[i]=cin.get();
cout<<sizeof(ch[0])<<endl;
cout<<sizeof(ch)<<endl;
//#undef _UNICODE
}

结果是一样的,都是
UNICODE..
abcdefghigklmnopqrstvuwxyz
2
40

快疯了。。
...全文
1613 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
小竹z 2014-09-30
  • 打赏
  • 举报
回复
想定义整个工程的UNICODE,就在vs中项目->xxx属性->c/c++->预处理器->预处理器定义,里面加上UNICODE。一般在涉及中文等编码时,需要使用UNICODE。根据国际化需求,程序最好设置为UNCODE字符集。
Ultimate_Redx 2014-09-30
  • 打赏
  • 举报
回复
引用 8 楼 jianwen0529 的回复:
是我看错了,不好意思,没看到那个杠杆 人家编译器预定义了UNICODE那你就没多大必要把它取消掉。 那你直接用它的宏定义UNICODE不就可以了吗?
搞不清楚UNICODE在哪里用在哪里不用很不爽的,尤其是涉及内存访问,文件读写。。 我还在研究。。
幻夢之葉 2014-09-30
  • 打赏
  • 举报
回复
引用 7 楼 liqiangzh126 的回复:
[quote=引用 6 楼 liqiangzh126 的回复:] [quote=引用 5 楼 jianwen0529 的回复:]

int main()
{
#define _UNICODE
#ifdef UNICODE
	cout<<"UNICODE.."<<endl; // 执行
#else 
	cout<<"_UNICODE"<<endl;
#endif // 结束if

	TCHAR ch[20];
	for(int i=0;i<19;i++)
		ch[i]=cin.get();
	cout<<sizeof(ch[0])<<endl;
	cout<<sizeof(ch)<<endl;
#undef _UNICODE
}

///////////////////////////////////////////////////////
    TCHAR ch[20];
	for(int i=0;i<19;i++)
		ch[i]=cin.get();
	cout<<sizeof(ch[0])<<endl;
	cout<<sizeof(ch)<<endl;

//你三个代码片这几句代码都会执行啊,那你说期望的为什么会不一样?
这几句是为了说明UNICODE宏没有被改变。。 我不知道为什么#define UNICODE之后还是会执行 #ifdef UNICODE这句。。[/quote] 写错了,是#define _UNICODE[/quote] 是我看错了,不好意思,没看到那个杠杆 人家编译器预定义了UNICODE那你就没多大必要把它取消掉。 那你直接用它的宏定义UNICODE不就可以了吗?
Ultimate_Redx 2014-09-29
  • 打赏
  • 举报
回复
引用 6 楼 liqiangzh126 的回复:
[quote=引用 5 楼 jianwen0529 的回复:]

int main()
{
#define _UNICODE
#ifdef UNICODE
	cout<<"UNICODE.."<<endl; // 执行
#else 
	cout<<"_UNICODE"<<endl;
#endif // 结束if

	TCHAR ch[20];
	for(int i=0;i<19;i++)
		ch[i]=cin.get();
	cout<<sizeof(ch[0])<<endl;
	cout<<sizeof(ch)<<endl;
#undef _UNICODE
}

///////////////////////////////////////////////////////
    TCHAR ch[20];
	for(int i=0;i<19;i++)
		ch[i]=cin.get();
	cout<<sizeof(ch[0])<<endl;
	cout<<sizeof(ch)<<endl;

//你三个代码片这几句代码都会执行啊,那你说期望的为什么会不一样?
这几句是为了说明UNICODE宏没有被改变。。 我不知道为什么#define UNICODE之后还是会执行 #ifdef UNICODE这句。。[/quote] 写错了,是#define _UNICODE
Ultimate_Redx 2014-09-29
  • 打赏
  • 举报
回复
引用 5 楼 jianwen0529 的回复:

int main()
{
#define _UNICODE
#ifdef UNICODE
	cout<<"UNICODE.."<<endl; // 执行
#else 
	cout<<"_UNICODE"<<endl;
#endif // 结束if

	TCHAR ch[20];
	for(int i=0;i<19;i++)
		ch[i]=cin.get();
	cout<<sizeof(ch[0])<<endl;
	cout<<sizeof(ch)<<endl;
#undef _UNICODE
}

///////////////////////////////////////////////////////
    TCHAR ch[20];
	for(int i=0;i<19;i++)
		ch[i]=cin.get();
	cout<<sizeof(ch[0])<<endl;
	cout<<sizeof(ch)<<endl;

//你三个代码片这几句代码都会执行啊,那你说期望的为什么会不一样?
这几句是为了说明UNICODE宏没有被改变。。 我不知道为什么#define UNICODE之后还是会执行 #ifdef UNICODE这句。。
幻夢之葉 2014-09-29
  • 打赏
  • 举报
回复

int main()
{
#define _UNICODE
#ifdef UNICODE
	cout<<"UNICODE.."<<endl; // 执行
#else 
	cout<<"_UNICODE"<<endl;
#endif // 结束if

	TCHAR ch[20];
	for(int i=0;i<19;i++)
		ch[i]=cin.get();
	cout<<sizeof(ch[0])<<endl;
	cout<<sizeof(ch)<<endl;
#undef _UNICODE
}

///////////////////////////////////////////////////////
    TCHAR ch[20];
	for(int i=0;i<19;i++)
		ch[i]=cin.get();
	cout<<sizeof(ch[0])<<endl;
	cout<<sizeof(ch)<<endl;

//你三个代码片这几句代码都会执行啊,那你说期望的为什么会不一样?
赵4老师 2014-09-29
  • 打赏
  • 举报
回复
UNICODE宏对一个项目来说,就好比你刚出生时选择使用哪个母语,这个选择不能在你成年后随时换来换去,否则会语无伦次,谁也听不懂你在说什么。
Ultimate_Redx 2014-09-29
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
自己定义和取消UNICODE宏完全是No Zuo No Die的节奏。 楼主还是亲自打开include\tchar.h的内容仔细研读一下吧。
能不能至少先解释一下上面的代码为什么会出现这个结果呀? 我晚上去看头文件。。
赵4老师 2014-09-29
  • 打赏
  • 举报
回复
自己定义和取消UNICODE宏完全是No Zuo No Die的节奏。 楼主还是亲自打开include\tchar.h的内容仔细研读一下吧。
Saleayas 2014-09-29
  • 打赏
  • 举报
回复
项目属性 | 常规 | 字符集 里面设置。

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧