gpt4 book ai didi

c++ - 为什么 C++03 文件流不接受字符串构造函数参数?

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

为什么下面的代码可以在 C++11 中编译,而不能在 C++03 中编译? (gcccl)

#include <string>
#include <iostream>
#include <fstream>

int main(int argc, char* argv[]) {
const std::string t("Hello");
std::ofstream out(t);
}

为什么 C++03 流不接受 std::string 作为构造函数参数? 这个决定是基于某事还是偶然发生的?

最佳答案

使用严格符合 C++03 的编译器编译时代码失败,因为采用 std::string 的构造函数仅在 C++11 中添加。

关于“它是否基于某种智能”的问题,由于添加了接口(interface),可以推断没有技术原因将其省略。

这是一个额外的便利,因为如果你有一个 std::string,你总是可以调用 .c_str() 来获得一个适合使用的 C 字符串旧界面。 (正如 C++11 中的文档所说,采用 std::string 的构造函数与调用采用 const 的相应构造函数具有完全相同的效果char* 与在字符串上调用 .c_str() 的结果。)

关于c++ - 为什么 C++03 文件流不接受字符串构造函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9473236/

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