c++11 數值類型和字符串的相互轉換


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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM