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;
时间: 2024-11-02 23:31:22