VC中关于char和TCHAR之间转换的问题

gothin 2008-08-23 06:57:28
我知道char转换为Tchar的语法是
_T("hello")
但是如果括号中的是变量怎么处理.?
例如:
char str[10] = "hello"
我觉得就应该写成 _T(str) .
但是调试的时候却出错了..
提示 “Lstr”: 未声明的标识符..
请问如果括号中是变量的话应该怎么来转换,谢谢.
...全文
13754 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
huanggang982 2012-10-18
  • 打赏
  • 举报
回复
怎么95分的那个回复看不了
plokijuh0001 2012-10-10
  • 打赏
  • 举报
回复
good ~
makerofu 2012-07-13
  • 打赏
  • 举报
回复
也在困恼这
wuxudongcg 2012-07-12
  • 打赏
  • 举报
回复
回复看
maoilong 2012-06-18
  • 打赏
  • 举报
回复
这个问题纠结了好久,学习了。
wang_chenger 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 cnzdgs 的回复:]
C/C++ code
char strUsr[10] = "Hello";
TCHAR Name[100];
MultiByteToWideChar(CP_ACP, 0, strUsr, -1, Name, 100);


顺便提一下,如果不是Unicode字符集,就不需要转换,直接复制即可,如果不确定是否使用Unicode字符集,可以这样写:
C/C++ code
……
[/Quote]
HHunter 2011-12-17
  • 打赏
  • 举报
回复
回复才能看见
hctxx 2011-09-01
  • 打赏
  • 举报
回复
看到这个帖子对自己有些帮助。也过来感谢下。
yolandadq 2010-08-23
  • 打赏
  • 举报
回复
学习学习
dilongl 2010-06-12
  • 打赏
  • 举报
回复
学习学习
dzcdzc1984 2009-10-11
  • 打赏
  • 举报
回复
谢谢,在这学到了不少东西呀!
luyixie 2009-08-10
  • 打赏
  • 举报
回复
啊我看看
wuyueshu 2009-08-06
  • 打赏
  • 举报
回复
多谢!~
wuyueshu 2009-08-06
  • 打赏
  • 举报
回复
亟待解决啊·~~
gothin 2008-08-23
  • 打赏
  • 举报
回复
感谢cnzdgs,搞定了..
cnzdgs 2008-08-23
  • 打赏
  • 举报
回复
	char strUsr[10] = "Hello";
TCHAR Name[100];
MultiByteToWideChar(CP_ACP, 0, strUsr, -1, Name, 100);

顺便提一下,如果不是Unicode字符集,就不需要转换,直接复制即可,如果不确定是否使用Unicode字符集,可以这样写:
	char strUsr[10] = "Hello";
TCHAR Name[100];
#ifdef UNICODE
MultiByteToWideChar(CP_ACP, 0, strUsr, -1, Name, 100);
#else
strcpy(Name, strUsr);
#endif
lizhigang34 2008-08-23
  • 打赏
  • 举报
回复
试试...

char strUsr[10] = "Hello";
TCHAR Name[100];
sprintf(Name, "%s", strUsr);
gothin 2008-08-23
  • 打赏
  • 举报
回复
唉,给个例子吧.都不对.
我在程序里先是这么写的:

TCHAR Name[100] = _T("Hello");

调试的时候完全正常,没有错误,但是我按照下面这样写:

char strUsr[10] = "Hello";
TCHAR Name[100] = _T(strUsr);

然后按调试的时候就提示TCHAR Name[100] = _T(strUsr)有错误.
错误信息是:“LstrUsr”: 未声明的标识符。
重点是我现在的程序没有其他的办法,必须牵涉到把一个char类型的变量转换成TCHAR.
如果我之前就一直定义TCHAR,就不能把另一个void的char类型的参数传递过来,
但是如果我定义char的话,就出现现在的情况了..
头都想大了,一直想不出该怎么办.所以,拜托各位了.. 真的是头都大了,想了一下午了..
lizhigang34 2008-08-23
  • 打赏
  • 举报
回复
下面是一些例子(请注意大写S 和小写s 的使用):

char szA[100]; //An ANSI string buffer
WCHAR szW[100]; //A Unicode string buffer

//Normal sprintf:all strings are ANSI
sprintf(szA, "%s","ANSI Str");

//Converts Unicode string to ANSI
sprintf(szA,"%S",L"Unicode Str");

//Normal swprintf:all strings are Unicode
swprintf(szW,L"%s",L"Unicode Str");

//Converts ANSI string to Unicode
swprintf(szW,L"%S", "ANSI Str");
gothin 2008-08-23
  • 打赏
  • 举报
回复
JoeDuke,我的意思就是如何把char转换成TCHAR.
如果不用那样转换的话,我今天的问题就不会存在了.
你说的方法我知道,可能我现在的问题是如果char是变量我应该怎么处理.
楼上有人说MultiByteToWideChar可以转..但是百度了很久,还是不知道怎么处理.
加载更多回复(6)

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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