如果我有一個wstringstream
,並且我想將它的.str()
數據作爲LPCWSTR,我該怎麼做?C++:從wstringstream獲取LPCWSTR?
1
A
回答
12
你可以做wstringstream.str().c_str()
as DeadMG writes。但是,該調用的結果僅在表達式的生命週期結束時纔有效,這是該表達式的一部分。
具體地,該
const LPCWSTR p = wss.str().c_str();
f(p); // kaboom!
將不起作用,因爲wstringstream.str()
返回一個臨時對象和.c_str()
返回一個指針到該對象,並在分配的結束該臨時對象將被破壞。
你可以做的,而不是要麼
f(wss.str().c_str()); // fine if f() doesn't try to keep the pointer
或
const std::wstring& wstr = wss.str(); // extends lifetime of temporary
const LPCWSTR p = wstr.c_str();
f(p); // fine, too
因爲綁定到const
引用臨時對象都會有自己的壽命延長了參考的一生。
0
wstringstream.str().c_str();
相關問題
- 1. 轉換wstringstream到LPCWSTR
- 2. C++獲取LPCWSTR和LPVOID的長度
- 3. C++ wstringstream << NULL
- 4. C++ lpcwstr到wstring
- 5. LPCWSTR錯誤 - C++
- 6. C++:不能使用std :: wstringstream
- 7. 麻煩與wstringstream
- 8. C++ - 與wstringstream一起使用istream_iterator
- 9. 從LPCWSTR轉換爲LPCSTR
- 10. 從std :: wstring Asisgn LPCWSTR數組
- 11. 從char轉換爲LPCWSTR
- 12. 從函數返回LPCWSTR?
- 13. 從C++獲取CustomActionData
- 14. 如何連接兩個LPCWSTR的C++
- 15. 將QString轉換爲LPCWSTR qt C++
- 16. 幫助上LPCWSTR
- 17. 'System :: String ^'到'LPCWSTR'
- 18. WCHAR到LPCWSTR
- 19. 不能從'QString'轉換爲'LPCWSTR'在Qt
- 20. 不能轉換從 '字符' 到 'LPCWSTR'
- 21. 獲取從RichTextBox的在C#
- 22. C#:從IConvertible獲取Bytearray
- 23. 從數組c獲取maxAbs#
- 24. (Objective C)從NSMutableArray獲取CFstringRef
- 25. 獲取ProcessName從Visual C++
- 26. CGO從C **獲取[] [] float32 float **
- 27. c從BMP獲取數據
- 28. 從mongodb c獲取對象#
- 29. C#從app.config中獲取值
- 30. 獲取從對象C#
或者,如果分配給一個常量引用,則引用的生存期爲 – 2010-06-07 17:41:32
@Greg:我剛剛正在編寫這個過程。 ':'' – sbi 2010-06-07 17:44:36
我認爲你的第二個代碼不好,因爲C++可以在調用'f'之前銷燬臨時文件。這真的發生在我身上一次!所以你不能存儲'c_str()'或'data()'的結果。 – Philipp 2010-06-07 19:47:33