草庐IT

numeric_cast

全部标签

c++ - 不使用 reinterpret_cast 读取二进制数据

只是因为在我编写读取二进制STL文件的程序之前,我从未读取过二进制文件。我使用带有char*参数的ifstream读取成员。为了将我的结构转换为char*,我使用了reinterpret_cast。但据我所知,我读过的每本关于C++的书都说过类似“除非你必须使用,否则不要使用reinterpret_cast”之类的话。有什么更好的方法来读取二进制数据,不一定是直接读取,但最终读取到一个结构中并且不需要reinterpret_cast?主要功能:std::ifstreamin(cmdline[1].c_str(),std::ios::binary);in.seekg(80,std::if

c++ - 几乎 pod 数据的 reinterpret_cast(布局兼容性是否足够)

我正在尝试了解static_cast和reinterpret_cast。如果我是正确的,标准(9.2.18)表示pod数据的reinterpret_cast是安全的:ApointertoaPOD-structobject,suitablyconvertedusingareinterpret_cast,pointstoitsinitialmember(orifthatmemberisabit-field,thentotheunitinwhichitresides)andviceversa.[Note:TheremightthereforebeunnamedpaddingwithinaPO

c++ - 智能指针和 dynamic_cast

如果我已经回答了这个问题,但我找不到答案,我提前道歉。注意:这是家庭作业,所以如果您觉得回答起来不自在,我完全理解。我有以下内容:ptr.h:templateclassPtr{T*address;size_t*counter;Ptr(T*address):address(address),counter(newsize_t(1)){}Ptr(constPtr&other):address(other.address),counter(other.counter){++(*counter);}virtual~Ptr(){if(0==--(*counter)){deleteaddress;

c++ - 为 numeric_limit<T>::max() 指定无限限制?

我有任意精度Integer类,这很像Java的BigInteger或OpenSSL的BIGNUM在运行中。我无法理解如何表达numeric_limit::max()的无限限制.StackOverflow有几个问题询问是否可以这样做(例如Isitoktospecializestd::numeric_limitsforuser-definednumber-likeclasses?),以及一些使用原语的示例的答案,但我没有看到使用任意精度整数类的示例。我还访问了std::numeric_limits引用页面,但我不清楚在这种情况下我应该做什么。在这一点上,我的结论是可以专攻numeric_l

c++ - C 和 C++ : Difference between Casting and Conversion

下面代码中第2行和第3行有什么区别吗?编译器在每种情况下做什么?charch='A';//line1inti=ch;//line2intj=(int)ch;//iine3一般来说,转换和转换(在C和C++中)有什么区别? 最佳答案 最终效果没有区别。cast是使用显式的、通用的、内置的castnotation进行转换。尽管在某些情况下,当我们指的是从Derived*到Base*(或从Derived&到Base&)的隐式转换时,我们会说“向上转换”。在某些情况下,人们定义了新的转换符号。术语的上述定义只是一个操作定义,也就是说,它不是

c++ - 启用用于 boost::lexical_cast 的类

来自lexical_cast的代码片段:classlexical_castable{public:lexical_castable(){};lexical_castable(conststd::strings):s_(s){};friendstd::ostreamoperator>(std::istream&i,lexical_castable&le);private:virtualvoidprint_(std::ostream&o)const{o>s_;}std::strings_;};std::ostreamoperator>(std::istream&i,lexical_cast

C++ 使用带有 boost::lexical_cast 的类

我想将我的测试类与boost::lexical_cast一起使用.我重载了operator和operator>>但它给了我运行时错误。这是我的代码:#include#includeusingnamespacestd;classTest{inta,b;public:Test(){}Test(constTest&test){a=test.a;b=test.b;}~Test(){}voidprint(){cout>(istream&input,Test&test){input>>test.a>>test.b;returninput;}friendostream&operator("102")

javascript - Cast vs ToXXX for v8 中的值句柄

我将V8作为辅助语言嵌入到C++程序中。我检索到Handle来自V8,当我调用类似的东西时Handlevalue_handle=context->Global()->Get(key_handle);然后我可以发现它是(比方说)一个带有value_handle->IsString()的字符串.如果是这样,我可以将其转换为Handle访问其特定于字符串的方法。但似乎有两种方法可以做到这一点:Handlestring=value_handle->ToString();或Handlestring=Handle::Cast(value_handle);但是,对于数组和函数,没有toArray()

c++ - 我可以在布局兼容的标准布局类型之间合法地重新解释_cast 吗?

我正在写一个类,假设答案是Areenumerationtypeslayoutcompatiblewiththeirunderlyingtype?是"is",是布局兼容的structkevent但使用enumclasses用于filter、flags等.为相关领域提供适当的基础类型。它也是标准布局(字段都是private并且它们本身都是标准布局,没有virtual成员,没有基类)。根据我对n3690的阅读,我可以确定我的类和structkevent具有相同的值表示,但我在标准中看不到任何允许我这样做的内容reinterpret_cast在它们之间,尽管这似乎是对“值表示”的合理解释。这在

c++ - 从右值到右值引用的 reinterpret_cast

只是一个简单的编译测试。gcc接受以下内容,而clang和msvc拒绝它:https://godbolt.org/z/DlUasLfloattest(){returnreinterpret_cast(0x7F800000);}按照标准,哪个是正确的? 最佳答案 此reinterpret_cast表达式寻求执行的转换不在转换列表中[expr.reinterpret.cast]reinterpret_cast可以执行[expr.reinterpret.cast]/1.0x7F800000是整数类型的文字。reinterpret_cast