草庐IT

C++标准

全部标签

c++ - double to hex string & hex string to double

我要做的是将double字符串转换为十六进制字符串,然后再转换回double。以下代码将double字符串转换为十六进制字符串。char*double2HexString(doublea){char*buf=newchar[17];//doubleis8-bytelong,sowehave2*8+terminating\0char*d2c;d2c=(char*)&a;char*n=buf;inti;for(i=0;i这似乎可行,但是,我不确定如何将生成的字符串转换回double字符串。请指教:) 最佳答案 我很惊讶地看到没有人提出标

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++ - gcc:警告:大整数隐式截断为无符号类型

#includeintmain(){unsignedcharc;c=300;printf("%d",c);return0;}输出是可预测的还是未定义的? 最佳答案 很抱歉第一个回答,这里是C++标准的解释:)Istheoutputinanywaypredictableoritsundefined??这是可以预见的。这段代码有两点需要注意:一、unsignedchar类型不能赋值:unsignedcharc;c=300;3.9.1Fundamentaltypes(Page54)Unsignedintegers,declaredunsi

c++ - 这个函数定义是如何工作的?

我几天前用gperf生成了一个散列函数。我所看到的hash函数对我来说是陌生的。它是这样的(我不记得确切的语法):unsignedinthash(str,size)registerchar*str;registerunsignedintsize;{//Definition}现在,当我尝试使用C++编译器(g++)进行编译时,它向我抛出错误,因为没有声明str和size。但是这个是在C编译器(gcc)上编译的。所以,问题:我认为C++是C的超集。如果是这样,那么它也应该使用C++编译器进行编译,对吗?C编译器如何理解定义?str和size首次出现时未声明。在函数签名之后但在函数体之前声明

c++ - C 语言中是否有像 STL( vector 、 map ...)这样的库?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicates:ContainerClass/LibraryforCIsthereagoodcollectionlibraryforC-language?在C++中,您有一个非常有用的标准模板库(STL),它具有vector、映射、集合等结构......如果我使用纯C,是否有任何库提供类似的结构/函数?谢谢!

c++ - 如果不使用它,访问数组外的数据是否不正确?

在我正在编写的算法中,我可以有以下内容(当然是经过简化的)inta[3]={1,2,3};intb=a[3];当用于填充b的索引溢出时,我从不使用b的值。代码仍然不正确吗?我是否必须进行明确的边界检查? 最佳答案 无论您是否使用b,此代码都有未定义的行为。为什么?因为根据定义,a[3]等同于*(a+3)。这里引用标准中的一段话,证明*(a+3)本身是未定义的,无论该值是被存储、使用还是单独保留。Whenanexpressionthathasintegraltypeisaddedtoorsubtractedfromapointer,t

c++ - 严格别名是 C 还是 C++ 的东西?

在ISO/IEC9899:TC2中,标准说明如下6.3.2.3PointersApointertoanobjectorincompletetypemaybeconvertedtoapointertoadifferentobjectorincompletetype.Iftheresultingpointerisnotcorrectlyalignedforthepointed-totype,thebehaviorisundefined.Otherwise,whenconvertedbackagain,theresultshallcompareequaltotheoriginalpointer

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。这是一个方便,仅此而已。