问个类型转换的问题,高分送上.谢谢各位~~~~~~~

hylovett 2008-11-22 01:22:59
TCHAR TEMP1 = "HELLO";

程序报错:
cannot convert from 'const char [6]' to 'WCHAR [129]'

请问应该怎样解决呢?
...全文
114 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hylovett 2008-11-22
  • 打赏
  • 举报
回复
报错:unexpected end of file in macro expansion 已经解决...

String^ k = "ssss";
CHAR szDeviceName[ RAS_MaxDeviceName + 1 ] = k; // 应该怎样做才正常呢?
hylovett 2008-11-22
  • 打赏
  • 举报
回复
TO: gomoku



我这样写的话 TCHAR temp2[] = _T("hello"); // 报错:_T 未定义

//加上了头文件#include <TCHAR.h> 之后还是有问题

//报了:unexpected end of file in macro expansion
//cannot convert from 'const wchar_t [4]' to 'WCHAR [17]'



应该怎么办呢...很急啊....

我想这样,如果我将 String^ k = "ssss";
CHAR szDeviceName[ RAS_MaxDeviceName + 1 ] = k; // 应该怎样做才正常呢?
wesleyluo 2008-11-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gomoku 的回复:]
C# code{
TCHAR temp1[129];
temp1 = "hello"; // <-- 错误,cannot convert from 'const char [6]' to 'WCHAR [129]'

TCHAR temp2[] = _T("hello"); // 定义并初始化,ok

TCHAR temp3[129];
StringCbCopy( temp3, 128, _T("hello") ); // 先定义空字符串,再用字符串拷贝的方式,ok
return 0;


// "hello" ASCII字符串
// L"h…
[/Quote]
这个很对,就是这句
TCHAR temp2[] = _T("hello"); // 定义并初始化,ok
学习了。
wangping_li 2008-11-22
  • 打赏
  • 举报
回复
LZ查一查API的MultiByteToWideChar用法,用这个来转好像可以的
y63964632 2008-11-22
  • 打赏
  • 举报
回复
不会 帮顶下
wangping_li 2008-11-22
  • 打赏
  • 举报
回复
晕,好像LZ是Unicode方式,所以TCHAR是WCHAR
wangping_li 2008-11-22
  • 打赏
  • 举报
回复

strcpy(TCHAR *, string.c_str())//将String赋与TCHAR
hylovett 2008-11-22
  • 打赏
  • 举报
回复
谢谢..gomoku可以发一些关于这些资料给我吗?

16652005@qq.com

谢谢
gomoku 2008-11-22
  • 打赏
  • 举报
回复
{
TCHAR temp1[129];
temp1 = "hello"; // <-- 错误,cannot convert from 'const char [6]' to 'WCHAR [129]'

TCHAR temp2[] = _T("hello"); // 定义并初始化,ok

TCHAR temp3[129];
StringCbCopy( temp3, 128, _T("hello") ); // 先定义空字符串,再用字符串拷贝的方式,ok
return 0;


// "hello" ASCII字符串
// L"hello" 宽字符串
// _T("hello") 根据当前的编译设定自动调整为ASCII或宽字符串
}
gomoku 2008-11-22
  • 打赏
  • 举报
回复

#include "stdafx.h"
#include <stdlib.h>
#include <vcclr.h>
using namespace System;

#define RAS_MaxDeviceName 31
typedef char CHAR;


int main(array<System::String ^> ^args)
{
String^ k = "ssss";
CHAR szDeviceName[ RAS_MaxDeviceName + 1 ];

pin_ptr<const wchar_t> wch = PtrToStringChars(k); // 取得宽字符指针(.Net托管string都是宽字符)
size_t cchConverted = 0;
size_t cbSize = sizeof(szDeviceName);
wcstombs_s( &cchConverted, szDeviceName, cbSize, wch, cbSize ); // 转化成ASCII(CHAR[]一般是ASCII字符串)

return 0;
}

hylovett 2008-11-22
  • 打赏
  • 举报
回复
补充一句..是VC++2005 环境...

贴子发重复了,只要问题解决,两篇都会结贴.

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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