模板和字符串转换

Templates and string conversion

本文关键字:转换 字符串      更新时间:2023-10-16

我正在创建一个计划从文件读取/写入的泛型类。

因此,我不确定将实例化哪种类型。如何在读取阶段将字符串转换为某种未知类型?

IE

template<class T>
void fromString(std::string from, T to) {
    to = from; 
}

无论如何,在不专门从事大量课程的情况下做到这一点?

这样做的

惯用方法是使用这样的东西:

template<typename T>
void fromString(std::string from, T& to) {
    std::istringstream iss(from);
    iss >> to; 
}

大多数用于解析字符串输入格式的可用标准专用化将由现有可用的std::istream& operator>>(std::istream&, T&);专用化涵盖。


无论如何,在不专门从事大量课程的情况下做到这一点?

不,您仍然需要为各种课程提供专业化,例如

class Foo {
private:
    int x;
    double y;
public:
   std::istream& getFromStream(std::istream& input) {
       input >> x;
       input >> y;
       return input;
   }
};
std:istream& operator>>(std::istream& is, Foo& subject) {
    return subject.getFromStream(is);
}