2012-03-29 103 views
4

我使用Boost庫來實現我的應用程序。我的應用程序的數據模型中的所有字符串都是寬字符(wchar_t類型)。但是在boost庫中,有些類僅處理窄字符(char類型),即「address boost::asio::ip::address::from_string(const char* str)」。所以我需要在調用boost函數時在std :: string和std :: wstring之間進行轉換。wstring字符串轉換器在升壓

  1. 由於字符串轉換而導致性能問題嗎?
  2. Boost中的轉換器,它使性能良好的std :: wstring和std :: string之間的轉換?

UPDATE

關於轉換功能。我發現下面的代碼工作。

std::wstring wstr(L"Hello World"); 
const std::string nstr(wstr.begin(), wstr.end()); 
const std::wstring wstr2(nstr.begin(), nstr.end()); 
+3

希望您的寬字符串中沒有任何非ascii字符... – Eugene 2012-04-07 07:18:46

回答

3

自己添加研究結論。

關於字符串轉換的性能開銷。我調試到上面的功能。轉換由C-char char by char實現。時間複雜度是O(L),L是字符串的長度。在我的應用程序中,需要轉換的字符串不是很長。所以我認爲沒有任何明顯的性能延遲由於轉換。