【发布时间】:2012-02-21 17:13:02
【问题描述】:
我要阅读的文本文件具有一定的模式:
Name line [tag name 452,54 | tag2 name 323,2 | tag3 name 252,25 ... ]
Name2 line [tag name 422,54 | tag2 name 33,2 | tag3 name 111,525 | tag4 name 222,2 ... ]
处理这个文件最麻烦的部分是没有设置每行的tags个数。
我试图通过逐行读取文件并使用scanf() 将这些行分解为变量来使其工作,因为它擅长读取模式。但是tag name的字数没有设置,所以也没有多大帮助。
我可以在不丢失任何数据的情况下稍微操作文件模式以使其更易于阅读,但我没有想到任何解决方案。 如何操作文件模式的示例:
Name line
tag name 452,54 | tag2 name 323,2 | tag3 name 252,25 ...
Name2 line
tag name 422,54 | tag2 name 33,2 | tag3 name 111,525 | tag4 name 222,2 ...
我添加了[] 和| 符号作为分隔符,但理想情况下,它们越少越好。
Name line
tag name 452,54
tag2 name 323,2
tag3 name 252,25 ...
Name2 line
tag name 422,54
tag2 name 33,2
tag3 name 111,525
tag4 name 222,2 ...
如果你读过类似的模式,请分享。我现在有点卡住了……
编辑:这是一个简单的 .txt 文件,我选择 tags name 和 name line 作为任何字符串值的替代品。没有 id 或其他东西可以让它变得简单。
【问题讨论】:
-
您希望将其加载到的结构的布局是什么?标准索引数组还是散列?
-
您需要更具体地了解您的格式。
line是分隔符还是输入的一部分?此外,文件格式似乎有点破损。当每个N由位置定义时,为什么会有tagN?
标签: c++ file-io text-files