将 std::wstring 转换为 SQLWCHAR *

Converting std::wstring to SQLWCHAR *

本文关键字:SQLWCHAR wstring std 转换      更新时间:2023-10-16

我有一个C++程序,它正在动态创建一个查询字符串,然后将其传递给SQLExecDirect调用以使用 ODBC 连接到数据库。我在将变量从一个函数传递到另一个函数时遇到问题,所以我想我一定缺少一些基本的东西?

ConstructQuery 函数(返回类型 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::wstring转换为SQLWCHAR *?另一种选择是重写函数,以便所有wstringSQLWCHAR *并以这种方式进行串联 - 但我不确定这是否可能,即使它是,我认为它不是首选?

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