中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中string庫與自定義類型的轉換

發布時間:2024-10-09 17:09:23 來源:億速云 閱讀:80 作者:小樊 欄目:編程語言

在C++中,std::string庫提供了許多用于處理字符串的操作。如果你需要將自定義類型與std::string進行轉換,你可以使用以下方法:

  1. 使用std::to_string函數std::to_string函數可以將數值類型(如整數、浮點數等)轉換為std::string。例如:
#include <iostream>
#include <string>

int main() {
    int num = 42;
    std::string str = std::to_string(num);
    std::cout << "The string representation of " << num << " is: " << str << std::endl;
    return 0;
}

對于自定義類型,你可以重載operator<<以支持直接輸出到std::ostream,然后使用std::ostringstream進行轉換:

#include <iostream>
#include <sstream>
#include <string>

class MyType {
public:
    int value;

    MyType(int v) : value(v) {}

    friend std::ostream& operator<<(std::ostream& os, const MyType& obj) {
        os << obj.value;
        return os;
    }
};

int main() {
    MyType obj(42);
    std::string str = obj;  // 使用重載的operator<<
    std::cout << "The string representation of " << obj << " is: " << str << std::endl;
    return 0;
}
  1. 使用std::stoistd::stod函數std::stoistd::stod函數可以將std::string轉換為整數和浮點數。例如:
#include <iostream>
#include <string>
#include <stdexcept>

int main() {
    std::string str = "42";
    try {
        int num = std::stoi(str);
        std::cout << "The integer representation of " << str << " is: " << num << std::endl;
    } catch (const std::invalid_argument& e) {
        std::cerr << "Invalid argument: " << e.what() << std::endl;
    } catch (const std::out_of_range& e) {
        std::cerr << "Out of range: " << e.what() << std::endl;
    }

    str = "3.14";
    try {
        double d = std::stod(str);
        std::cout << "The double representation of " << str << " is: "<< d << std::endl;
    } catch (const std::invalid_argument& e) {
        std::cerr << "Invalid argument: " << e.what() << std::endl;
    } catch (const std::out_of_range& e) {
        std::cerr << "Out of range: " << e.what() << std::endl;
    }

    return 0;
}

對于自定義類型,你可以重載operator>>以支持從std::istream讀取,然后使用std::istringstream進行轉換:

#include <iostream>
#include <sstream>
#include <string>

class MyType {
public:
    int value;

    MyType(int v) : value(v) {}

    friend std::istream& operator>>(std::istream& is, MyType& obj) {
        is >> obj.value;
        return is;
    }
};

int main() {
    std::string str = "42";
    std::istringstream iss(str);
    MyType obj;
    iss >> obj;  // 使用重載的operator>>
    std::cout << "The MyType value is: " << obj.value << std::endl;

    str = "3.14";
    iss.clear();
    iss.str(str);
    obj.value = 0;
    iss >> obj.value;  // 使用重載的operator>>
    std::cout << "The MyType value is: " << obj.value << std::endl;

    return 0;
}

這些方法可以幫助你在std::string和自定義類型之間進行轉換。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

平利县| 商河县| 旬邑县| 应城市| 苗栗县| 永善县| 汨罗市| 宁海县| 军事| 桑植县| 罗源县| 佳木斯市| 班戈县| 西乌珠穆沁旗| 孝义市| 卢氏县| 拉萨市| 霍邱县| 岑巩县| 寻乌县| 灵武市| 寻甸| 大洼县| 香格里拉县| 建瓯市| 上思县| 台南市| 新沂市| 海安县| 柘城县| 赤壁市| 霍山县| 望江县| 乌拉特前旗| 开原市| 青铜峡市| 高要市| 南雄市| 嵊州市| 且末县| 兴宁市|