如何分离和保护文本块并在之后打开它们? C++
Posted
技术标签:
【中文标题】如何分离和保护文本块并在之后打开它们? C++【英文标题】:How to separate and safe textblocks and open them afterwards? C++ 【发布时间】:2019-05-10 20:17:07 【问题描述】:我想保护一个与下一个分隔的文本块(包括新行和每种类型的字符)。所有这些都必须保存在一个文件中,然后我想打开它们(以进行进一步处理)。我怎样才能将它们分开保存?
一个例子: 一个简单的解决方案是,如果我在每个文本块之后写一个逗号。但是如果文本块中也有逗号,我无法正确打开它们。
我正在寻找放置在这些文本块之间的标志,以便我可以分隔这些文本块。但是,它必须是一个不能作为字符有效的标志。
感谢大家的帮助 - 周末愉快 :)
【问题讨论】:
如果不是逗号分隔,什么是“文本块”?数据从何而来? – 但是,它必须是一个无效的字符。 – 如果不在std::string
s 中,这些“文本块”如何存储?
它是一个 std::string... 它只是一个用户输入,就像个人日记一样。我知道,我可以使用 '\0' 但我不太喜欢那样。也许这些文本块之间会有一些数字(也存储以供以后使用)并且像逗号之类的东西会更好。嗯...也许我可以在搜索字符串时停用逗号搜索。还有其他选择吗?
那么用户决定“文本块”何时结束?
完全正确。这个文本块可以是任何东西。
所以它必须是用户可以输入的东西。那么它不可能是:它必须是一个无效的字符。
【参考方案1】:
您可能正在寻找escape characters。
此示例用于基本说明。您可以选择 json、xml 或其他标准。它们还将具有合适的转义功能,这些功能大多以相同的方式工作。
在您的示例中,此转义字符必须是逗号。
转义
保存文本块时,将所有逗号“,”替换为字符串“\c”。
然后您可以使用“,”来分隔文本块,因为文本块中的所有逗号现在都是“\c”。 请注意,您还需要先转义转义字符。 ("\" -> "\")
拆分
当您尝试在文本之间找到分隔符时,您会搜索逗号。
不转义
当您回读文本块并找到正确的开头和结尾时,再次将“\”替换为“\”,将“\c”替换为“,”。
【讨论】:
谢谢@stena - 这是我的问题 欢迎您@ratloser。如果您可以使用我的答案,请投票和/或接受它。 :) 我做到了 :) 感谢您的反馈!声望低于 15 人的投票将被记录,但不会更改公开显示的帖子得分。 @ratloser 谢谢。你也可以accept吗?【参考方案2】:您可以像这样使用 json:
"Text_1": "string",
"Text_2": "string",
"Text_3": "string",
我也推荐你这个图书馆
https://github.com/nlohmann/json
最好的问候!
【讨论】:
感谢您的帮助,但我认为这有点尴尬。我需要每次将“Text_1”:“string”写入文件 - >更大的文件。当用户输入包含一个我用来分隔字符串的标记时,主要问题就出现了......就像在你的例子中,逗号、冒号或类似的东西。但无论如何,我会看看这个库,谢谢:) 不客气!这是编写或访问您需要的文本块的好方法,例如 write: json j; // 添加一个字符串,存储为 std::string j["name"] = "hjshdjkadhasjkdhaskjdad";并阅读: std::ifstream i("file.json"); json j;我 >> j; auto text_ = j["text_1"].get<:string>();以上是关于如何分离和保护文本块并在之后打开它们? C++的主要内容,如果未能解决你的问题,请参考以下文章