【问题标题】:How to separate and safe textblocks and open them afterwards? C++如何分离和保护文本块并在之后打开它们? C++
【发布时间】:2019-05-10 20:17:07
【问题描述】:

我想保护一个与下一个分隔的文本块(包括新行和每种类型的字符)。所有这些都必须保存在一个文件中,然后我想打开它们(以进行进一步处理)。我怎样才能将它们分开保存?

一个例子: 一个简单的解决方案是,如果我在每个文本块之后写一个逗号。但是如果文本块中也有逗号,我无法正确打开它们。

我正在寻找放置在这些文本块之间的标志,以便我可以分隔这些文本块。但是,它必须是一个不能作为字符有效的标志。

感谢大家的帮助 - 周末愉快 :)

【问题讨论】:

  • 如果不是逗号分隔,什么是“文本块”?数据从何而来? – 但是,它必须是一个无效的字符。 – 如果不在std::strings 中,这些“文本块”如何存储?
  • 它是一个 std::string... 它只是一个用户输入,就像个人日记一样。我知道,我可以使用 '\0' 但我不太喜欢那样。也许这些文本块之间会有一些数字(也存储以供以后使用)并且像逗号之类的东西会更好。嗯...也许我可以在搜索字符串时停用逗号搜索。还有其他选择吗?
  • 那么用户决定“文本块”何时结束?
  • 完全正确。这个文本块可以是任何东西。
  • 所以它必须是用户可以输入的东西。那么它不可能是:它必须是一个无效的字符。

标签: c++ file text save


【解决方案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>();
猜你喜欢
  • 2014-04-19
  • 1970-01-01
  • 2017-12-29
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多