将 std::wstring 转换为 SQLWCHAR *
Converting std::wstring to SQLWCHAR *
我有一个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 *
并以这种方式进行串联 - 但我不确定这是否可能,即使它是,我认为它不是首选?
您将返回一个指向局部变量的指针,该指针在函数 ConstructQuery 的末尾超出了范围。最简单的方法是按值返回std::wstring
,然后从那里开始工作。
相关文章:
- Ctypes wstring通过引用传递
- 在C++中将变量 wstring 分配给 Char 数组
- 将日语 wstring 转换为 std::string
- 使用 memcpy 将矢量数据复制到 wstring 的正确方法
- -fshort-wchar 和 std::wstring - 分段错误
- 输出 c++ 窗口 wstring 日志在终端中正确
- 从 uint32_t 转换为 wchar_t 并存储在 wstring 中时出现访问冲突
- 如何将std::wstring转换为char const[]
- 将utf16宽std::wstring转换为utf8窄std::string以获得罕见字符时出现问题
- 找不到 std::wstring 中存在的wchar_t
- 将 char* argv[] 转换为 wstring
- 将 std::string 转换为具有特殊字符的 FString (TCHAR / wstring)
- 在 C++ 中将 utf8 wstring 转换为窗口中的字符串
- 使用 ReadProcessMemory() 将未知大小的字符数组或字符串读入 wstring 中
- 从字符的 ASCII 代码点到 wstring
- 将整数附加到 std::wstring 会给出错误
- boost库的哪一部分使cout能够打印wstring以及如何打印?
- 如何将 wstring 转换为 wchar_t*?C++
- 如何从 LPWSTR** 转换为 std::vector<std::wstring>
- 将 std::wstring 转换为 SQLWCHAR *