草庐IT

Long-range

全部标签

c++ - 应该使用哪个函数将字符串转换为 long double?

请注意,一般来说,double不同于longdouble。strtod将string转换为double,但是将string转换为longdouble应该使用哪个函数? 最佳答案 在C++03中,使用boost::lexical_cast,或者:std::stringstreamss(the_string);longdoubleld;if(ss>>ld){//itworked}在C99中,使用strtold。在C89中,使用sscanf和%Lg。在C++11中使用stold。关于每个人接受的格式可能存在细微差别,因此请先检查详细信息.

c++ - C3859 : Virtual memory range for PCH exceeded

我在编译(编辑:抱歉,我在这里没有说清楚:我实际上是指“重建”)我的混合模式项目时不时(不是每次)收到此错误消息。VisualStudio告诉我“使用‘-Zm114’或更高的命令行选项重新编译”。原则上没问题,我照VS说的做。但是目前,这有两个问题:为什么它不会在我进行重建时每次发生?如果我理解正确,编译器在编译我的项目时内存不足。因此,如果我进行重建,清除所有以前的工作,如果我不做任何更改,下次它不应该也用完内存吗?为了安全起见,我已经在这个项目的所有配置中为Zm(即Zm120)指定了120的值。为什么我会收到带有此较低值的错误消息?还是建议值114只是VS的胡乱猜测?

c++ - Boost any_range 与 "canonical form"- 后者是什么?

Boost的any_range文档说明如下:Despitetheunderlyingany_iteratorbeingthefastestavailableimplementation,theperformanceoverheadofany_rangeisstillappreciableduetothecostofvirtualfunctioncallsrequiredtoimplementincrement,decrement,advance,equaletc.Frequentlyabetterdesignchoiceistoconverttoacanonicalform.作者所说的

c++ - CONCEPT_REQUIRES_ ranges-v3 中的实现

试图学习如何使用EricNiebler的ranges-v3库,并阅读源代码,我看到了宏定义:#defineCONCEPT_PP_CAT_(X,Y)X##Y#defineCONCEPT_PP_CAT(X,Y)CONCEPT_PP_CAT_(X,Y)///\addtogroupgroup-concepts///@{#defineCONCEPT_REQUIRES_(...)\intCONCEPT_PP_CAT(_concept_requires_,__LINE__)=42,\typenamestd::enable_if::type=0\/**/因此,简而言之,模板定义如下:template(

c++ - unsigned long 的类型不同于 Windows 上的 uint32_t 和 uint64_t (VS2010)

在Windows7、32位的VisualStudio2010上,unsignedlong似乎是与uint32_t和uint64_t截然不同的类型。看下面的测试程序:#include#includetemplatestructis_same_type{staticconstboolvalue=false;};templatestructis_same_type{staticconstboolvalue=true;};#defineTO_STRING(arg)TO_STRING_IMPL(arg)#defineTO_STRING_IMPL(arg)#arg#definePRINT_SAME

C++ chrono - 将持续时间作为 float 或 long long

我有一个持续时间typedefstd::chrono::high_resolution_clockClock;Clock::time_pointbeginTime;Clock::time_pointendTime;autoduration=std::chrono::duration_cast(endTime-beginTime);我在std::chrono::milliseconds中得到了duration。但我需要duration作为float或longlong。如何做到这一点? 最佳答案 来自documentationtempl

c++ - 如何正确地将 time_t 转换为 long int?

我仍在学习C++中的类型转换,目前我正在做这件事longintt=time(NULL);我正在使用VS2013并注意到从“time_t”到“long”警告的转换,所以我想我应该将其强制转换为看起来像;longintt=static_casttime(NULL);然而,这还行不通,但结合静态转换和C风格转换仍然有效longintt=static_cast(time(NULL));我只是想知道是否有人可以帮助阐明这一点? 最佳答案 time(NULL)不是强制转换而是返回time_t的函数调用.自time_t与longint不完全相同的

c++ - unsigned int 到 unsigned long long 定义明确吗?

我想看看当unsignedlonglong被赋值给unsignedint时幕后发生了什么。我制作了一个简单的C++程序来试用它,并将所有io移出main():#include#includevoidusage(){std::cout\n";exit(0);}voidatoiWarning(intfoo){std::cout生成的程序集为main生成了这个:0000000000400950:400950:55push%rbp400951:4889e5mov%rsp,%rbp400954:4883ec20sub$0x20,%rsp400958:897decmov%edi,-0x14(%rb

c++ - clang 的 'range-loop-analysis' 诊断是关于什么的?

背景:考虑以下example:#include#includeintmain(){std::vectorvectorBool{false,true};for(constauto&element:vectorBool)std::cout它发出警告:test.cpp:6:21:warning:loopvariable'element'isalwaysacopybecausetherangeoftype'std::vector'doesnotreturnareference[-Wrange-loop-analysis]for(constauto&element:vectorBool)std:

c++ - long long 有定义吗?

在哪里检查是否定义了longlong类型?我想做这样的事情:#ifdefLONGLONG#definelong_longlonglong#else#definelong_longlong#endif 最佳答案 LLONG_MAX给出longlong可表示的最大值;如果您的实现不支持longlong,它不应该定义LLONG_MAX.#include#ifdefLLONG_MAX#definelong_longlonglong#else#definelong_longlong#endif这不是一个完美的解决方案。longlong在C++