gpt4 book ai didi

c++ - 无法将参数 1 从 'ATL::CStringT>>' 转换为 'const char *'

转载 作者:行者123 更新时间:2023-11-28 02:51:36 34 4
gpt4 key购买 nike

如何正确转换这种方式?

    VARIANT varIndex;
CString csIndex;
//Index BSTR
csIndex = (LPCSTR)(_bstr_t)vtIndex;
csIndex.MakeUpper();
if (csIndex.Left(3) == PROCESSUS_TABLE)
{
lIndex = atoi((LPCSTR)csIndex.Mid(3));
if ((unsigned long)lIndex<0)
return E_INVALIDARG;
}

错误信息:

C2664: 'int atoi(const char *)' : cannot convert argument 1 from 'ATL::CStringT<wchar_t,ATL::StrTraitATL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>' to 'const char *'

我找不到解决这个问题的方法,请问有什么好主意吗?

最佳答案

变量'csIndex'是unicoce字符串(wchar_t),而宏LPCSTR是针对ansi字符串(char)。

所以你应该使用 Unicode 函数,代码将是:

lIndex = _wtoi((LPCWSTR)csIndex.Mid(3));

这一行没有问题:

csIndex = (LPCSTR)(_bstr_t)vtIndex;

因为智能指针类型_bstr_t可以自动处理char*/wchar_t*转换。

关于c++ - 无法将参数 1 从 'ATL::CStringT<wchar_t,ATL::StrTraitATL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>' 转换为 'const char *',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22916601/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com