我正在尝试调用一个接受LPTSTR作为参数的函数。我使用字符串来调用它,就像foo(“bar”)中一样;
我得到一个错误,我“无法将参数1从'const char 3‘转换为'LPTSTR'",但我不知道为什么或如何修复它。任何帮助都是最好的。
发布于 2009-09-11 20:59:53
您可能已经定义了UNICODE,并且LPTSTR扩展为wchar_t*。对字符串使用文本宏,以避免出现问题,例如foo(TEXT("bar"))。
发布于 2009-09-11 21:00:36
LPTSTR是指向TCHAR的非常数指针。反过来,TCHAR在ANSI构建中被定义为char,在Unicode构建中被定义为wchar_t (定义了UNICODE和/或_UNICODE符号)。
因此,LPTSTR等同于:
TCHAR foo[] = _T("bar");因为它不是const,所以不能安全地使用文字调用它--文字可以分配在只读内存段中,而LPTSTR是被调用者可能改变字符串内容的信号,例如
void truncate(LPTSTR s)
{
if (_tcslen(s) > 4)
s[3] = _T('\0');
}当使用Visual C++ 2008编译时,如果你传入一个文字,就会崩溃。
发布于 2009-09-11 21:33:06
foo(const_cast<LPTSTR>("bar"));当foo试图改变传递给它的数据时,就会像上面解释的那样崩溃。
https://stackoverflow.com/questions/1413239
复制相似问题