gpt4 book ai didi

c++ - 将文本文件解析为对象时的错误处理

转载 作者:行者123 更新时间:2023-11-28 02:24:35 25 4
gpt4 key购买 nike

我想解析一个简单的文本文件并根据它包含的数据创建一个对象。我为此使用 C++11(而且我不流利)。

如果出现任何类型的错误(例如丢失文件或无效文本),我希望告诉解析函数的调用者出了什么问题,并提供诸如发生了何种错误以及文件中的位置等信息。

我不认为解析时发生错误是异常的,所以似乎异常不是要走的路。

我想返回一个包含所有信息的struct,包括在成功的情况下生成的解析对象:

struct ParsingResult
{
bool success;
int errorCode;
int errorLine;
ParsedObject object;
}

但是我不相信这个解决方案,因为如果出现错误,我仍然必须提供一个 ParsedObject。当然,我可以为此定义一个默认构造函数,但就其本质而言,ParsedObject 只有在解析成功时才有意义。

我可以将 ParsedObject 更改为 ParsedObject*,但我不愿意在不必要时使用指针,我想知道是否可以避免这种情况。

我的问题:你能建议一个更好的解决这个问题的方法吗?这是什么?

最佳答案

struct Obj
{
// your object from the data...
}

struct ParseError
{
int errorCode;
int errorLine;
}

class Parser
{
ParseError m_error;

// other things
public:
bool parse(const std::string& filename, Obj& parsedObject)
{
// Open file, etc...
//parsedObject.property1 = some_value;

// if something is wrong, set m_error and return false;
// return true if ok
}

ParseError getLastError() { return m_error; }
}


// in your code
Parser p;
Obj o;
if(!p.parse("filename", o))
{
// ParseError = p.getLastError();
}

关于c++ - 将文本文件解析为对象时的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31178655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com