gpt4 book ai didi

c++ - 什么是最好的跨平台解析文本文件的方法?

转载 作者:行者123 更新时间:2023-11-28 03:44:56 24 4
gpt4 key购买 nike

我想将我的 Windows 代码移植到 native C++,并且需要摆脱所有 CLI 代码。我发现 .NET 在解析文本输入方面非常有帮助,但是当我开始用 C++ 重写它时,我仍然习惯于使用 fseekchar * 代替 C 代码字符串。发现 C++ 在 std 命名空间中有一个 string 类型我打开了我的 STL 文档(来自 zip 存档)并找到了 "string_discussion.html"它以“SGI STL 中的字符串”开头,并继续描述可能导致间歇性错误的疏忽。

std::string 安全吗? std 与 STL 有什么关系(如果有的话)? C 文件 IO 危险,而 C++ 流和字符串 IO 好得多吗?

最佳答案

文档中描述的问题存在于某些编译器中,尤其是 MSVC,但我从未在现实世界中遇到过实际问题。 GNU 编译器实现了所描述的“不可共享”字符串,即使用非常量 operator[] 使字符串不可共享并在需要时创建一个拷贝。

根据定义,STL 类不是线程安全的,如果从多个线程访问,则需要用锁包围;我认为这是一项功能,因为它可以显着提高它们的速度并允许实现无锁算法。

std 和STL 之间的关系基本上是STL 已经集成到位于std 命名空间中的C++ 标准库中。该标准此后不断发展,但在很大程度上保持兼容。

通常在文本解析器中使用它是安全的:逐行解析的典型模式是

std::istream &is;
for(std::string line; getline(is, line);)
{
// parse line
}

关于c++ - 什么是最好的跨平台解析文本文件的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7953586/

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