2012-03-29 61 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是字符串的长度。在我的应用程序中,需要转换的字符串不是很长。所以我认为没有任何明显的性能延迟由于转换。