C++ LPCTSTR to char*
C++ LPCTSTR to char*
我正在使用visual studio 2010 MFC构建一个C++程序。我的程序调用了一个不属于项目的DLL,它接受一个char*。我有一个函数,可以获得LPCTSTR格式的字符串。我已经在谷歌上搜索了大约两个小时,但没有找到解决方案。如何将MFC LPCTSTR转换为char*。我发现的所有东西要么不起作用,要么就是无法编译。
在MFC中,最简单的方法是通过CStringA
进行转换(前提是生成的缓冲区将是只读参数):
LPCTSTR pszA = ...
CStringA sB(pszA);
const char* pszC = sB;
char* pszD = const_cast<char*>(pszC);
其他选项可用,并已讨论:
- c++从LPCTSTR转换为常量字符*
- 如何从LPCTSTR转换为LPSTR
- CCD_ 2、CCD_ 3宏等
LPCTSTR
被定义为const wchar_t *
或const char *
,这取决于您的项目是定义了预处理器符号UNICODE
(还是_UNICODE
,我忘了MFC使用哪一个)。
因此,问题的解决方案取决于您是否使用UNICODE设置。
如果您正在使用它,则需要将字符串转换为窄字符串。使用CStringA
执行此操作。
如果你不使用UNICODE,你需要制作一个可变的副本,并将其传递给DLL,以防它想要修改字符串。您可以通过使用CString
创建一个副本来完成此操作。
在任何一种情况下,一旦CString
对象中有一个副本,则使用GetBuffer
方法获取指向字符串的可变指针,调用DLL函数,然后在调用后调用ReleaseBuffer
。
LPCTSTR patientName= L"";
CStringA sB(patientName);
const char* pszC = sB;
DcmFileFormat fileformat;
//Type casting below to const char * str
OFCondition status = fileformat.loadFile(((LPCSTR)(CStringA)str));
if (status.good())
{
if (fileformat.getDataset()->findAndGetString(DCM_PatientName, pszC).good())
{
//Type casting from const char * to LPCTSTR
m_List.InsertColumn(4, LPCTSTR(pszC) , LVCFMT_LEFT, 100);
}
}
这是我用来对变量
进行类型转换的方式相关文章:
- 如何解决"invalid conversion from 'char' to 'const char*'"
- Writing Char to Arduino EEPROM
- memcpy unsigned char to int
- 如何修复C++中的'cannot convert char to char*'错误?
- 返回"Cannot convert from 'std::ofstream {aka std::basic_ofstream<char>}' to bool"错误
- 使用strupr和strlwr时如何解决错误"invalid conversion of char to char*"?
- C++ cast char * to unsigned char
- Char to Int - C++
- Qt char* to QString
- 找不到错误"invalid conversion from char to const char*"的解决方案
- nameless char[] to std::string& reference
- atoi() - from char to int
- Unicode const char* to JString using JNI and C++
- 了解错误"error: cannot convert ‘char**’ to ‘const char*’ for argument ‘1’ to ‘double atof(const char*)’"
- const char* to LPCWSTR in Qt
- "incompatible types in assignment of 'char' to 'char'[100]"我使用的是 strcat 对吗?
- const char * to vector<unsigned char> Initalisation
- c++ const char* to char*
- 引起'Cannot convert from const char * to char *'
- char to char* issues