string和數值類型轉換
c++11提供了to_string方法,可以方便的將各種數值類型轉換為 字符串類型:
std::string to_string(int value); std::string to_string(long int value); std::string to_string(long long int value); std::string to_string(unsigned int value); std::string to_string(unsigned long long int value); std::string to_string(float value); std::string to_string(double value); std::wstring to_wstring(int value); std::wstring to_wstring(long int value); std::wstring to_wstring(long long int value); std::wstring to_wstring(unsigned int value); std::wstring to_wstring(unsigned long long int value); std::wstring to_wstring(float value); std::wstring to_wstring(double value);
還提供了stoxxx方法,將string轉換為各種類型的數據:
std::string str = "1000"; int val = std::stoi(str); long val = std::stol(str); float val = std::stof(str);
c++11還提供了字符串(char*)轉換為整數和浮點類型的方法:
atoi: 將字符串轉換為 int atol: 將字符串轉換為long atoll:將字符串轉換為 long long atof: 將字符串轉換為浮點數
寬窄字符轉換
c++11增加了unicode字面量的支持,可以通過L來定義寬字符
std::wstring wide_str = L"中國人"; //定義了寬字符字符串
將寬字符轉換為窄字符需要用到condecvt庫中的std::wstring_convert。
std::wstring_convert使std::string和std::wstring之間的相互轉換變得很方便,如代碼:
std::wstring wide_str = L"中國人"; std::wstring_convert<std::condecvt<wchar_t, char, std::mbstate_t>> converter(new std::codecvt<wchar_t, char, std::mbstate_t>("CHS"); std::string narrow_str = converter.to_bytes(wide_str); std::wstring wstr = converter.from_bytes(narrow_str); std::cout << narrow_str << std::endl; wcout.imbue(std::locale("chs")); std::wcout << wstr << std::endl; std::cout << wstr.size() << " " << wstr.length() << endl; std::cout << narrow_str.size() << " " << narrow_str.length() << endl;