我有一个C ++程序,它正在动态创建查询字符串,然后将其传递给SQLExecDirect使用ODBC连接到数据库的调用。我在将变量从一个函数传递到另一个函数时遇到麻烦,因此我认为我一定缺少一些基本的知识吗?
SQLExecDirect
在ConstructQuery函数中(返回type SQLWCHAR *),我有:
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 = (SQLWCHAR *)test.c_str()
我用:statement = L"test string";
statement = L"test string"
该变量可以正常通过,但随后我无法在函数的较早部分中动态创建“测试字符串”查询。
我很难找到更多有关的信息SQLWCHAR。我猜我可能转换std::wstring为SQLWCHAR *错误?另一个选择是重写该函数,以便所有的wstringareSQLWCHAR *都以这种方式进行连接- 但是我不确定这是可能的,即使是这样,我也不认为它是首选?
SQLWCHAR
std::wstring
wstring
您正在返回一个指向局部变量的指针,该局部变量在函数ConstructQuery的末尾超出了范围。返回一个std::wstring按值然后从那里开始工作可能是最简单的。