c++ - 为不同的文件扩展名调用不同的函数

标签 c++ data-structures

情况是这样的:

我有一个用 C++ 编写的图形类,我需要从文件构建图形对象。问题是 Graph 以多种不同的方式存储在文件中,所以我在考虑一个函数,使用文件扩展名,可以调用正确的过程来构建特定格式的 Graph。我该如何进行?我是不是错了,或者我不能在类里面重载运算符>>?提前致谢。

最佳答案

operator>>(应该)不知道它从中提取的流的任何细节,因此使用此运算符可能是错误的策略。

最好的方法是:

graph_type load_from_file(const std::string& file_path) { //or use something like boost::filesystem::path

    std::ofstream file { file_path };

    if(endswith(file_path, ".graph") {
        return deserialize_from_graph(ofstream);
    }
    if(endswith(file_path, ".g2") {
        return deserialize_from_g2(ofstream);
    }
    //other formats here


    //else throw
}

注意,endswith 不是来自标准库,但是 boost 在它的字符串算法中有一个实现。

关于c++ - 为不同的文件扩展名调用不同的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24494338/

相关文章:

c# - .Net 数据结构 : ArrayList, List、HashTable、Dictionary、SortedList、SortedDictionary——速度、内存以及何时使用它们?

c++ - 如何存储可以用字符串分配的数值

C++ - 推进作为参数传递的指针

c++ - STL 容器和内存管理——对象列表与对象指针列表

c++ - OpenCV 教程 : Load and Display an Image (codeblocks, fedora20)

有人可以帮我解决C语言中数据结构排序的问题吗

java - 树结构方法

c++ - int 和字符串解析

c++ - cocos2dx Action 错误: liquid, wave3d和lens3d

java - 使用队列的超市模拟器