CString与wchar_t[]的赋值问题

敝人正在调试一个程序,现遇到一问题求大牛解答
我将一个wchar_t[50]的变量赋值给一个CString的变量
编译时能过,但程序运行到这个赋值语句时程序挂了
sFSURTData.strSamplingTime = SResultOfFSUNHT.wchSamplingTime
这两个变量都是属于结构体里的成员

4个回答

wchar_t 到 CString 的赋值,应该直接将 wchar_t 赋值给 CString 就可以。
但必须保证 wchar_t 的变量有字符串结束符哦,否则真会出现程序挂掉的问题。

SXQ080824405
SXQ080824405 回复91program: Format()也会挂掉我试过
接近 6 年之前 回复
91program
91program 回复SXQ080824405: 帖出你的代码来看看,Format 函数应该可以处理这种情况。
接近 6 年之前 回复
SXQ080824405
SXQ080824405 我其它地方也有这仲用法的,不用自己加结束符啊
接近 6 年之前 回复
SXQ080824405
SXQ080824405 我试过用CPY函数和FORMAT函数,这两种方法也不行,一定要自己把wchar_t才行吗?
接近 6 年之前 回复

以下是代码  CNHLogAPI是我们公司内部用的一个类
case 1:

        {
            sFSURTData.fYD = (float)_wtof(SResultOfFSUNHT.wchValue1);
            CNHLogAPI::WriteLog(L"采样时间", strMsg, SResultOfFSUNHT.wchSamplingTime1);
            sFSURTData.strSamplingTime = SResultOfFSUNHT.wchSamplingTime1/*SResultOfFSUNHT.wchSamplingTime1*/;
            CNHLogAPI::WriteLog(L"一组数据获取完成", strMsg, strMsg);
            break;
        }

        WriteLog是写日志的,前面的那行日志写出来了,后面的没执行,所以肯定是赋值出错了
SXQ080824405
SXQ080824405 回复91program: 我只能是用写日志的方法跟踪,这个程序是控制多个设备的,只能在客户电脑里运行,我电脑没有串口接那么多设备,客户电脑里没有开发环境
接近 6 年之前 回复
SXQ080824405
SXQ080824405 WriteLog(L"采样时间", strMsg, SResultOfFSUNHT.wchSamplingTime1);这句是已经执行完的,里面的wchSamplingTime1换成其它的成员也是有数据的,WriteLog(L"一组数据获取完成", strMsg, strMsg);里的参数跟前面那行也是相同的,不可能是参数错误啊
接近 6 年之前 回复
SXQ080824405
SXQ080824405 回复91program:WriteLog(L"采样时间", strMsg, SResultOfFSUNHT.wchSamplingTime1);
接近 6 年之前 回复
91program
91program 看看这句 sFSURTData.strSamplingTime = SResultOfFSUNHT.wchSamplingTime1/*SResultOfFSUNHT.wchSamplingTime1*/; 好像是直接将数字赋值给 String 吧。最好是不要直接赋值,要使用相应类型到 String 的转换函数:ToString()
接近 6 年之前 回复
91program
91program 肯定?我看也不一定。既然 CNHLogAPI 是公司内部使用的类,应该有源代码吧。调试跟踪进去看看,是什么原因引起的错误。
接近 6 年之前 回复

用CStringW,可以接受wchar_t数组

使用copy构造函数代替

sFSURTData.strSamplingTime = CString(SResultOfFSUNHT.wchSamplingTime);

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问