wchar与char的转换,wchar与string类型转换,vs配置

本文介绍如何在C++中实现CString与char*之间的转换,包括使用WideCharToMultiByte函数从wchar_t到char类型的转换,以及通过CString的GetBuffer方法修改CString内容。此外还介绍了Visual Studio中项目的配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.记录相关代码

char *wtoc(wchar_t *wText)  
{  
DWORD dwNum = WideCharToMultiByte(CP_ACP, NULL, wText, -1,NULL, 0, NULL, FALSE);//把第五个参数设成NULL的到宽字符串的长度包括结尾符  
char *psText = NULL;  
psText = new char[dwNum];  
if(!psText)  
{  
delete []psText;  
psText = NULL;  
}  
WideCharToMultiByte (CP_ACP, NULL, wText, -1,psText, dwNum, NULL, FALSE);  
return psText;  
}  

std::string GetExecutablePath(void)
{
WCHAR path[MAX_PATH+1];
GetModuleFileName(NULL,path,MAX_PATH);

char *temp =  wtoc(path);  
char* p = strrchr(temp,'\\');
*p = NULL;
std::string str = temp;
return str;
}

2.CString转化成char* (2)—— 使用 CString 对象的 GetBuffer 方法
  如果你需要修改 CString 中的内容,它有一个特殊的方法可以使用,那就是 GetBuffer,它的作用是返回一个可写的缓冲指针。 如果你只是打算修改字符或者截短字符串,你完全可以这样做:
CString s(_T("File.ext"));
LPTSTR p = s.GetBuffer();
LPTSTR dot = strchr(p, ''.''); // OK, should have used s.Find...
if(p != NULL)
*p = _T(''\0'');
s.ReleaseBuffer();


CString s("GrayCat");
LPCTSTR p = s;
  它可以正确地运行。这是由C语言的强制类型转化规则实现的。当需要强制类型转化时,C++规测容许这种选择。比如,你可以将(浮点数)定义为将某个复数 (有一对浮点数)进行强制类型转换后只返回该复数的第一个浮点数(也就是其实部)。可以象下面这样:
Complex c(1.2f, 4.8f);
float realpart = c;

char* szName = GetName().GetBuffer(20);
RegSetValueEx(hKey, "Name", 0, REG_SZ, 
              (CONST BYTE *) szName,
              strlen (szName + 1));

3.VS中配置

头文件路径:../../../data/data\PtcDataMng ../../../map/SEngine/SEngine

lib库路径:../../../../../build_msvc/lib/Win32/Debug  ../../../map/SEngine/SEngine/lib/win32_  ../../../../build_msvc/Debug  或者$(SolutionDir)\lib\$(PlatformName)\$(ConfigurationName)

依赖库:OSGEngine.lib  MapAPId.lib cppsqlite3.lib

中间输出目录:$(ConfigurationName) 或者 $(SolutionDir)\obj\$(PlatformName)\$(ConfigurationName)\$(ProjectName)
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值