gpt4 book ai didi

c++ - 使用字符串的任何缺点(C++)

转载 作者:太空狗 更新时间:2023-10-29 19:41:02 24 4
gpt4 key购买 nike

我实际上在谷歌上查过这个,但我通常发现相反的情况。在 C++ 中使用字符串库字符串而不是 C 字符串或某种字符数组是否有实际的缺点?除了可能有点慢?

尽管我已经搜索过但找不到任何东西(但我确定有人问过),请随意指出我的骗局

最佳答案

假设 std::string 的供应商实现是合格的,那么确实没有明显的缺点。 std::string 类不太可能比打开编译器优化的普通 C 字符串慢。

即使您发现自己处于需要 C 字符串的情况(比如,您需要使用采用const char* 的API),你总是有 std::string::c_str()

您可能遇到的一个可能缺点是供应商实现了 COW以非线程安全的方式处理语义。 (参见 std::string in a multi-threaded program)

然而,这在 C++0x 中将不是问题,甚至在 C++03 中它实际上是一个有问题的供应商实现的示例,而不是 std::string 的任何固有错误>.

另一个可能的缺点是关于 C++03 标准中的措辞是否需要 std::string 实现以使用连续的内存缓冲区。这使得您是否可以执行诸如直接从文件读取到 std::string 对象之类的事情有些疑问。然而,很容易争论 C++03 标准确实,事实上,隐含地需要一个连续的缓冲区,而且无论如何这主要是一个学术问题,因为在实践中 1) 大多数(或所有)实现std::string 实际上确实提供了一个连续的缓冲区,并且 2) 这个问题对于 C++0x 来说没有实际意义,它明确需要一个连续的缓冲区。

关于c++ - 使用字符串的任何缺点(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4698163/

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