admin

将std :: wstring转换为SQLWCHAR *

sql

我有一个C
++程序,它正在动态创建查询字符串,然后将其传递给SQLExecDirect使用ODBC连接到数据库的调用。我在将变量从一个函数传递到另一个函数时遇到麻烦,因此我认为我一定缺少一些基本的知识吗?

ConstructQuery函数中(返回type SQLWCHAR *),我有:

std::wstring test = L"test string"; //This test string will actually be several concatenated strings
SQLWCHAR *statement = (SQLWCHAR *)test.c_str();
std::wcout << statement;
return statement;

这将按预期打印语句变量。但是当我像这样将变量传递给我的主要功能时:

SQLStatement = ConstructQuery(SQLStatement);
std::wcout << SQLStatement;

我没有输出。

如果代替statement = (SQLWCHAR *)test.c_str();

我用:statement = L"test string";

该变量可以正常通过,但随后我无法在函数的较早部分中动态创建“测试字符串”查询。

我很难找到更多有关的信息SQLWCHAR。我猜我可能转换std::wstringSQLWCHAR *错误?另一个选择是重写该函数,以便所有的wstringareSQLWCHAR *都以这种方式进行连接-
但是我不确定这是可能的,即使是这样,我也不认为它是首选?


阅读 173

收藏
2021-07-01

共1个答案

admin

您正在返回一个指向局部变量的指针,该局部变量在函数ConstructQuery的末尾超出了范围。返回一个std::wstring按值然后从那里开始工作可能是最简单的。

2021-07-01