2014-04-02工作日志:error C2440: 'initializing' : cannot convert from 'char [8]' to 'unsigned short *'

这篇工作日志探讨了在C++编程中遇到的error C2440错误,原因是尝试将'char [8]'转换为'unsigned short *'而未进行正确的TEXT转换。文章指出,当涉及UNICODE字符串时,必须使用TEXT宏将ASCII字符串转换为UNICODE格式以避免此类错误。并提到原始代码包含三个错误,并提供了修正后的正确代码示例。
摘要由CSDN通过智能技术生成
#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <tchar.h>
void main()
{
	DWORD dwCount;
	TCHAR *tC1="topStar";
	TCHAR *tC2="TOPstar";

	dwCount=_tcscmp(tC1,tC2);
	_tprintf("%d",dwCount);
}

以上的写法明显是错误的,因为TCHAR变量所指的字符串没有经过TEXT转换。

因为字符串默认是以ASCII码方式保存,因为是英文字符,因此若以UNICODE 方式保存,就必须TEXT()转换成UNICODE格式。


以上代码有三个错误,以下的改变才是正确的:

#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <tchar.h>
void main()
{
	DWORD dwCount;
	TCHAR *tC1=TEXT("topStar");
	TCHAR *tC2=TEXT("TOPstar");

	dwCount=_tcsicmp(tC1,tC2);
	_tprintf(TEXT("%d"),dwCount);
}

如果tC1是数组名,则也应该这样定义:
TCHAR tC1[]=TEXT("TOPstar");
必须用TEXT()给转换一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值