gpt4 book ai didi

c++ - 为什么 STL ifstream 和 ofstream 类不将 std::string 作为文件名?

转载 作者:可可西里 更新时间:2023-11-01 16:31:53 24 4
gpt4 key购买 nike

这是对STL的提示。为什么他们将文件名参数作为 (char *) 而不是 std::string?这似乎没有意义。

关于这个主题还有另外两个问题:

问题是我有很多看起来像这样的代码:

    std::ofstream f(fname.c_str());

当我希望它看起来像这样时:

std::ofstream f(fname);

上述帖子中提到的其他问题是 UTF-16 与 UTF-8 的问题。 (UTF-16 可能包含会破坏 POSIX API 的 NULL)。但这并不是真正的问题,因为实现可以在调用 open() 之前将 UTF-16 转换为 UTF-8。

但说真的,这没有任何意义。有升级STL的计划吗?

最佳答案

why don’t ifstream and ofstream classes take std::string as filenames?

我已经看到了一些合理的论据(即这会创建流对字符串的依赖),但坦率地说,我认为真正的原因是流比标准库及其字符串要老得多。

Are there any plans to upgrade STL?

它称为 C++11,将成为标准的新版本。我不知道文件流是否改变了。你可以看看 final draft并自己找出答案。

请注意,STL 是包含在标准库中的容器、算法和迭代器库的名称。标准库的一部分还有字符串、流和其他。
特别是,流不是 STL 的一部分。他们是兄妹。

关于c++ - 为什么 STL ifstream 和 ofstream 类不将 std::string 作为文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2716972/

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