首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用TCHAR*操作值

使用TCHAR*操作值
EN

Stack Overflow用户
提问于 2022-10-13 15:05:00
回答 1查看 89关注 0票数 0

我正在编写以下代码

代码语言:javascript
复制
void MaskSensitiveData(TCHAR* szData,bool bEncryptAll)
{
    szData = L"Test";
}
    
void CMFCTestDlg::OnBnClickedButton1()
{
    TCHAR szTest[100] = L"This is a Password:myPass";
    MaskSensitiveData(szTest,false);
    AfxMessageBox(szTest);
}

我期望MaskSensitiveData方法改变szTest,并将值传回给调用者。我看价值没有变。您能告诉我如何编辑调用函数中的值吗?

EN

回答 1

Stack Overflow用户

发布于 2022-10-13 22:32:59

MaskSensitiveData()中,szData参数是通过值传递的,因此正在创建指针的副本,而在MaskSensitiveData()中分配给szData本身的任何新值都将分配给该副本,而不会反映回调用方的原始变量。

而且,这段代码甚至不应该编译,因为字符串文字是一个const字符数组(ie, L"Test"是一个const wchar_t[5]),它衰变为指针到const,但是szData是指针到非const,不允许指向const数据。

您需要将字符串文本的内容复制到szData所指向的内存中,例如:

代码语言:javascript
复制
void MaskSensitiveData(TCHAR* szData, int iDataLen, bool bEncryptAll)
{
   _tcscpy_s(szData, iDataLen, TEXT("Test"));
}
    
void CMFCTestDlg::OnBnClickedButton1()
{
    TCHAR szTest[100] = TEXT("This is a Password:myPass");
    MaskSensitiveData(szTest, 100, false);
    AfxMessageBox(szTest);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74058025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档