草庐IT

标准ACL

全部标签

c++ - C 标准库的(其余部分)未涵盖 C 标准库的哪些部分?

TheC++libraryincludesthesamedefinitionsastheClanguagelibrary但C++库似乎在非C库头文件中复制(/扩展)了C库的某些功能。比如C库有,C++库有和;C库有,C+库有和。如果我需要一个字符串类,我假设我最好使用而不是,因为可以受益于C++中的所有非C功能(例如异常)。但是C库中有一些功能在C++库中没有以任何其他形式存在。例如,我在之外找不到像memcpy和memcmp这样的东西。C库的哪些部分在非C库头文件中没有类似物?(如果C++标准的版本对此很重要,我对C++11感兴趣。) 最佳答案

c++ - 在构造函数 C++ 标准中修改 const 吗?

在构造函数中修改const是C++标准吗?我正在修改我的struct删除固定值(默认成员初始值设定项)以便稍后在构造函数时设置它但我忘记删除const关键字并稍后注意到它。令我惊讶的是,我没有遇到编译错误,它工作正常,但对于测试用例2,它提供了一个编译器。它们有何不同?测试用例1:structA{constintx=2;A():x(3){}};测试用例2:structA{constintx=2;A(){x=3;//compileerror!error:read-onlyvariableisnotassignable}}; 最佳答案

c++ - 使用 `A<int>::template B<int> x;` 定义变量是否符合 C++ 标准?

这个问题在这里已经有了答案:WhereandwhydoIhavetoputthe"template"and"typename"keywords?(8个答案)关闭8年前。gcc、vc++和clang接受以下代码。templatestructA{templatestructB{};};intmain(){A::By;//OKasexpectedA::templateBx;//AlsoOK!Isthisstandard-compliant?};使用A::templateBx;定义变量是否符合C++标准??

c++ - 将 const 添加到 size_t 会导致编译失败是标准行为吗?

我最近读了一篇很酷的文章:https://akrzemi1.wordpress.com/2015/08/20/can-you-see-the-bug/在ideone上玩简化版时,我得到了令人惊讶的行为:#include#includeusingnamespacestd;intmain(){constsize_tsz=258;strings{sz,'#'};assert(2==s.size());}不编译,但是删除const的相同程序编译:#include#includeusingnamespacestd;intmain(){size_tsz=258;strings{sz,'#'};as

c++ - 为什么标准同时提供了 is_integer 和 is_exact?

std::numeric_limits提供了2个互斥的常量:is_integer:“true对于所有整数算术类型T”is_exact:“true对于所有使用精确表示的算术类型T”是否存在非精确整数类型的可能性?在这里允许做什么?在我知道我是否正在处理精确数字的所有模板中,我使用了is_integer,我现在是否还需要添加对is_exact的检查? 最佳答案 来自is_exactcppreference页面:NotesWhileallfundamentaltypesTforwhichstd::numeric_limits::is_ex

c++ - 为什么 C++ 标准要求 `Clock::now` 函数为 `static` ?

在C++11中,C++在标准中有一些计时工具。这些设施之一是时钟的标准接口(interface),它基本上允许在调用时钟的now函数时获取时间。到目前为止一切都很好,但我看不出要求now是静态函数的原因。在托管系统上,标准时钟可能可以纯粹通过系统调用或通过读取处理器计数器等来实现。但是,这限制了需要维护某些状态的自定义时钟的实现。使用此接口(interface),要么无法实现某些时钟,要么必须使用全局状态。我遇到的一个问题基本上是将本地时钟与我从NTP服务器获取的时间同步。代码看起来像这样:classsntp_clock{public:sntp_clock():local_time_a

c++ - 使用 istream_iterator 并从标准输入或文件中读取

我正在使用MicrosoftVisualC++编写程序,我希望我的程序使用istream_iterator从标准输入或文件中读取。谷歌搜索互联网并没有显示我认为它必须多么简单。因此,例如,我可以很容易地编写并从标准输入中读取:#include#include#includeusingnamespacestd;intmain(){istream_iteratormy_it(cin);for(;my_it!=istream_iterator();my_it++)printf("%s\n",(*my_it).c_str());}或者我可以写这个并从文件中读取:#include#include

c++ - Visual Studio 2012 C++ 标准输出

编译Win32应用程序时,fprintf(stdout/stderr)在VisualStudio中打印到哪里?我一直听到它进入输出,但我看不到它!。在没有C++控制台窗口的情况下打印到输出日志的标准方法是什么? 最佳答案 如果您的程序与/SUBSYSTEM:WINDOWS链接,您将看不到控制台输出,除非您分配一个控制台。这是分配控制台选项的代码。使用此方法,您不需要更改链接器设置或创建WinMain。staticvoidOpenConsole(){intoutHandle,errHandle,inHandle;FILE*outFil

c++ - C++标准是否保证cin、cout等先创建后销毁?

cin、cout、基本流相关-是否在标准中的任何地方保证这些对象将首先创建并最后销毁?这意味着非本地静态对象可以在它们的构造函数和析构函数中依赖它们(这些对象和基本流之间没有构造函数竞争)。 最佳答案 它们保证在包含之后声明的任何静态对象之前创建无论如何,在开始之前main.它们在程序执行期间不会被销毁。包含header具有声明类型为ios_base::Init的静态变量的效果,其创建确保标准流被初始化。如果你想要标准语:C++1127.4.1[iostream.objects.overview]/2:Theobjectsareco

c++ - 使用命名空间标准和库

为什么我们既需要“头文件”又需要usingnamespace任何库函数的标记才能正确执行。例如cout除非我们使用iostream否则将无法工作.除非我们使用“使用命名空间标准”,否则它也不会工作。我的问题是为什么我们需要两者的结合usingnamespacestd以及#include对于cout执行成功? 最佳答案 包含库header可使库功能对您的程序代码可见。否则,您的程序甚至不知道库的存在。这是必要的部分。编写usingnamespacestd只允许您编写cout而不是全名std::cout。这是一个方便,仅此而已。