我有一个void write<typename T>(const T&)
通过将 T 对象写入 ostream 来实现的函数,以及一个T read<typename T>()
从 istream 读取 T 的匹配函数。我基本上使用 iostreams 作为纯文本序列化格式,这显然适用于大多数内置类型,尽管我还不确定如何有效地处理 std::strings。
我也希望能够写出一系列对象,例如void write<typename T>(const std::vector<T>&)
或基于迭代器的等价物(尽管在实践中,它总是与向量一起使用)。然而,虽然编写一个迭代元素并将它们写出的重载很容易做到,但这并没有添加足够的信息来允许匹配的读取操作知道每个元素是如何分隔的,这本质上与我的问题相同有一个 std::string。
是否有一种方法可以适用于所有基本类型和 std::string?或者也许我可以摆脱 2 个重载,一个用于数字类型,一个用于字符串?(可能使用不同的分隔符或使用分隔符转义机制的字符串。)
编辑:当面对这样的问题时,我很欣赏通常明智的倾向,即“你不想那样做”并提出更好的方法,但我真的很喜欢与我所问的直接相关的建议,而不是而不是你认为我应该问的。:)