小智 5
这样做的惯用方法是使用以下方法:
template<typename T>
void fromString(std::string from, T& to) {
std::istringstream iss(from);
iss >> to;
}
Run Code Online (Sandbox Code Playgroud)
解析字符串输入格式的大多数可用标准专业都将由已有的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);
}
Run Code Online (Sandbox Code Playgroud)