如何解决如何在 C 中将变量 Char* 与函数 TEXT() 一起使用
function(Char* request) {
ret = sqlExecDirect(hstmt,request,sql_NTS);
// ...
}
但是,此功能不起作用,但是,如果我更改如下所示的行,它会起作用:
function(Char* request) {
ret = sqlExecDirect(hstmt,TEXT("SELECT * FROM..."),sql_NTS);
// ...
}
那么,既然我不能执行 TEXT(request),我该如何将我的 sql char* 变量转换为 TEXT() 版本?
解决方法
TEXT(xxx)
宏的结果是 wide 字符串文字 (const wchar_t*
) 或 plain 字符文字 ({{1 }}),取决于是否定义了 const char*
宏。
但是,正如您所指出的,您不能在 文字 以外的任何内容上使用宏;因此,它在转换 UNICODE
变量 时没有用。
为了实现您的结果,以同时适用于 Unicode 和非 Unicode 构建的方式,您可以使用 char*
类型的临时缓冲区数组(TCHAR[n]
类型与 { {1}} 宏),然后使用 TCHAR
函数将您的(固定的)TEXT
数据写入其中。
这是一个简短的演示程序,展示了这种“与目标无关”的转换:
char*
您还可以声明一个(静态内联)函数 _stprintf()
来进行转换(但您需要提供一个输出缓冲区,或者在该函数中创建和管理一个):
#include <stdio.h>
#include <tchar.h>
#include <Windows.h>
#define MAXLEN 256
int main()
{
TCHAR output[MAXLEN]; // Type can be either `char` or `wchar_t`
const char* input = "SELECT * FROM...";
_stprintf(output,TEXT("%hs"),input); // Resolves to either "sprintf" or "_swprintf"
_tprintf(TEXT("%s\n"),output); // Just to show the result!
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。