我可以将 _T() 宏与变量一起使用吗?
Can I use the _T() macro with a variable?
string pagexx = "http://website.com/" + chatname;
string pathxx = "test";
HRESULT resxx = URLDownloadToFile (NULL, _T(pagexx.c_str()),_T(pathxx.c_str()), 0, NULL );
错误是"错误:标识符"Lpagexx"未定义。与路径xx相同
我不能像_T("nice")
那样输入字符串,因为我特别需要聊天名称。 我怎样才能做到这一点?
_T
是一个宏,用于在文字上放置正确的前缀。这不是您正在做的事情,因此您不想使用_T
。
您的问题从第一行开始,因为您已经硬编码了您正在使用具有窄字符的字符串(即 string
是专门包含char
元素)的字符串,而不是选择适当的字符串类型。请参阅问题根据 MSVC++ 中的 unicode 设置在 std::string 和 std::wstring 之间自动更改?。
如果您的字符串仅包含非 unicode,那么最简单的解决方案是:
HRESULT resxx = URLDownloadToFileA (NULL, pagexx.c_str(), pathxx.c_str(), 0, NULL );
_T
的东西至少已经过时了十年,根本没有理由为针对两个不同版本的Windows API编译应用程序的复杂性而烦恼。
如果您的std::string
包含 UTF-8,则需要将它们转换为 UTF-16,然后调用 URLDownloadToFileW
。
_T
只是一个带有前缀的宏,它的参数是带有L
(如果使用Unicode编译)。变量必须使用 wchar_t
(或 wstring
和 simmilar)声明
假设chatname
属于 wstring
类型。
wstring pagexx = L"http://website.com/" + chatname;
wstring pathxx = L"test";
HRESULT resxx = URLDownloadToFile ( NULL, pagexx.c_str(), pathxx.c_str(), 0, NULL );
或者更好(因为你是在Microsoft下编译的东西,你可以使用更通用的宏,这样你就可以在设置或不设置UNICODE
的情况下编译相同的代码)。
_tstring pagexx = _T("http://website.com/") + chatname;
_tstring pathxx = _T("test");
HRESULT resxx = URLDownloadToFile ( NULL, pagexx.c_str(), pathxx.c_str(), 0, NULL );
相关文章:
- 如何将两个字符串加在一起,就好像它们是变量一样?
- 为什么将三个变量与 == 一起比较会计算为 false?
- 在Visual Studio中,与std::async一起使用时不调用"thread_local"变量"析构函数,这是一个错误吗?
- 将cpp_redis pub/sub与条件变量一起使用时出现问题
- 字符串比较在与变量一起使用时给出不同的输出
- 为什么原子不能与自动变量一起使用
- 我可以将特征定义的变量与函数adjacent_difference一起使用吗?
- 为什么在 sizeof() 函数中与 * 运算符一起使用和不使用 * 运算符时,指向结构变量的指针大小会有所不同?
- 常量变量初始化仅与成员初始化列表一起工作
- 如何将数值变量与计时文字结合在一起
- 如何将初始值设定项与右值引用参数一起使用 // 为什么不能使用另一个 C 样式数组变量初始化 C 样式数组
- 与LLDB一起观看for循环中的变量i
- 将 std::sort 与指向整数变量的指针一起使用会产生意外的输出
- 有什么方法可以将字符串文字u8与变量一起使用吗
- 为什么类名与"::"一起使用在变量名之前?
- 当与可能导致缓冲区溢出的功能一起使用时,外部变量是否比其他变量更大
- 在C++中将cout与变量一起使用时出错
- 如何将结构变量与 scanf 一起使用
- 如何将结构与 *变量名称一起使用
- 静态成员变量在C++中如何与多态性一起表现