【问题标题】:Converting std::wstring to SQLWCHAR *将 std::wstring 转换为 SQLWCHAR *
【发布时间】:2012-07-01 18:40:55
【问题描述】:

我有一个 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 *?另一种选择是重写函数,使所有wstring 都是SQLWCHAR * 并以这种方式进行连接 - 但我不确定这是可能的,即使它是我不认为它是首选?

【问题讨论】:

  • 我知道这是基本的东西,非常感谢。有没有办法让我接受你的评论作为这个问题的答案?

标签: c++ sql odbc wstring


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多