2012-06-30 102 views
1

我有一個C++程序,它動態創建一個查詢字符串,然後它將被傳遞給SQLExecDirect調用以使用ODBC連接到數據庫。我無法將變量從一個函數傳遞給另一個函數,因此我認爲我必須缺少一些基本的東西?將std :: wstring轉換爲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 = L"test string";

該變量通過很好,但我不能動態地在函數的前面部分創建「測試字符串」查詢。

我很難找到關於SQLWCHAR的很多信息。我猜測我可能會錯誤地將std::wstring轉換爲SQLWCHAR *?另一個選擇是重寫函數,以便所有的wstring都是SQLWCHAR *,並以這種方式進行連接 - 但我不確定這是可能的,即使它是我不認爲它是首選?

+0

我知道這是基本的東西,非常感謝。有沒有辦法讓我接受你的評論作爲答案? – TwoHundredOK

回答

2

您正在返回一個指向局部變量的指針,該變量超出了函數ConstructQuery結尾處的範圍。根據價值返回std::wstring可能是最容易的,然後從那裏開始工作。