2011-01-08 65 views
1

如問題所述,什麼是合適的模板函數將wstring轉換爲const char *?我的程序完全是用Unicode編寫的,然而,SQlite需要const char *來完成大部分功能。函數將wstring轉換爲常量字符*爲SQlite

我在msdn上找到了這樣做的方法,在這裏:http://msdn.microsoft.com/en-us/library/ms235631%28v=vs.80%29.aspx,其中name是一個wstring。

// Convert to a char* 
    size_t origsize = wcslen(name.c_str()) + 1; 
    const size_t newsize = 100; 
    size_t convertedChars = 0; 
    char nstring[newsize]; 
    wcstombs_s(&convertedChars, nstring, origsize, name.c_str(), _TRUNCATE); 

回答

2

應該使用* 16源碼功能(例如sqlite3_prepare16)其中you4可以給UTF-16(即wstring的)作爲參數。 Don_t忘記使用2 * wcslen作爲字符串的長度。如果你堅持const char *函數,你必須首先轉換爲UTF-8。

+0

如果您正在編寫跨平臺的應用程序,請注意`wchar_t`不一定是UTF-16代碼單元。當然,它在Windows上。 – dan04 2011-01-08 19:07:54