草庐IT

c++ - 在 CPP 中用单个引用表示两种或多种数据类型

在我的代码中,对于某些变量,我总是必须编写unsignedlonglong来声明变量。有没有一种方法可以使用单个单词(例如“ULL”)来表示unsignedlonglong,然后使用这种语法来声明其他变量。例如ULL数量; 最佳答案 你必须这样声明:typedefunsignedlonglongULL; 关于c++-在CPP中用单个引用表示两种或多种数据类型,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

c++ - 关于long long和long double

它们什么时候成为标准C++的一部分?我认为longlong是C++0x的特性,对吗?longdouble怎么样?它已经在C++98或C++03中了吗? 最佳答案 longdouble和longlong已经存在了很长一段时间,并分别在C89和C99中标准化。C++从其第一个版本C++98标准化了longdouble,并将在即将到来的标准修订中添加longlong。 关于c++-关于longlong和longdouble,我们在StackOverflow上找到一个类似的问题:

c++ - 如何从 unsigned long 转换为 void*?

我正在尝试在具有给定文件描述符的文件的某个偏移处pwrite一些数据。我的数据存储在两个vector中。一个包含unsignedlong和其他char。我想构建一个void*指向代表我的unsignedlong和char的位序列,并将它传递给pwrite以及累积大小。但是如何将unsignedlong转换为void*?(我想我可以找出字符)。这是我正在尝试做的事情:voidwriteBlock(intfd,intblockSize,unsignedlongoffset){void*buf=malloc(blockSize);//hereIshouldbetryingtobuildbuf

c++ - 是否存在 fseek/ftell 给出错误文件大小的情况?

在C或C++中,以下可用于返回文件大小:constunsignedlonglongat_beg=(unsignedlonglong)ftell(filePtr);fseek(filePtr,0,SEEK_END);constunsignedlonglongat_end=(unsignedlonglong)ftell(filePtr);constunsignedlonglonglength_in_bytes=at_end-at_beg;fprintf(stdout,"filesize:%llu\n",length_in_bytes);是否有开发环境、编译器或操作系统可以根据填充或其他特定

c++ - 如何在 C++ 中提高 int 或 long 的幂

小问题:我只是想知道,如果一个人想要将一个int或long提高到另一个int或long的幂,会吗(long)std::pow((double)a,(double)b)够用还是需要(long)(0.5+std::pow((double)a,(double)b))? 最佳答案 有两个考虑因素。第一个是由于浮点表示的不精确而导致的舍入;在这种情况下这不是问题,因为只要位数少于float中的有效位数,整数就可以完美表示。如果long是32位并且doublesignificand是53位,通常情况下,不会有问题。第二个考虑因素是pow函数本身

C++:将 unsigned long long int 转换为 vector<char> ,反之亦然

谁能告诉我如何将unsignedlonglongint转换为vector,反之亦然。为了将unsignedlonglongint转换为vector,我尝试了以下操作:unsignedlonglongintx;vectorbuf(sizeof(x));memcpy(&buf[0],&x,sizeof(x));当我测试x=1234567890时,它失败了。但是当我尝试使用较小的x值(比如1-100)时,它起作用了……为了将vector转换为unsignedlonglongint,我使用了:unsignedlonglongint=(unsignedlonglongint)buf[0];谁能告

c++ - 'stol' 使用 Visual Studio 而不是 gcc 引发的异常

以下代码在VisualStudio2013而不是gcc4.9.2下运行时抛出异常。报错是:'exception:stolargumentoutofrange'stol返回一个long因此temp的大小应该足够大以容纳返回值。任何人都可以解释这种行为。这可能是编译器错误吗?#include#include#include#includeintmain(){conststd::stringvalue="4294967295";//0xfffffffftry{int64_ttemp=std::stol(value);}catch(std::invalid_argument&ex){std::

c++ - long double C++的范围是多少

这个问题在这里已经有了答案:longdoublevsdouble(3个答案)关闭9年前。C++中longdouble的取值范围是多少?

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++ - 我可以使用成员变量作为 hash_set/hash_map 的键吗?

我有这样一个类:classFoo{longlongId;stringx;stringy;//othermembervariablesandfunctions};我想将其存储在hash_set中(或hash_map),但使用Id成员变量作为插入和搜索的键。我不确定我该怎么做。我想到了以下几种方法,但都不是很好:1)我可以编写一个自定义散列函数,使用Id对对象进行散列,但我不能使用find()hash_set上的方法通过Id(longlong)查找项目,因为它需要Foo要传入的对象。2)我可以复制Id并创建一个hash_map而不是hash_set但我有1亿个这些对象的实例,所以我不想复制