草庐IT

c++ - 1 字节整数数据类型

我写了下面的代码:#include#include#includeusingnamespacestd;intmain(){uint8_tc;cin>>hex>>c;cout但是当我输入c(12的十六进制)时,输出也是c。我本来期待12。后来我才知道:uint8_tisusuallyatypedefforunsignedchar.Soit'sactuallyreadingcasASCII0x63.是否有一个1字节整数在执行I/O时表现为整数而不是字符? 最佳答案 据我所知不是。您可以使用更宽的整数类型执行I/O,并根据需要使用范围检查

c++ - 这是(枚举 : char {}) a gcc bug?

在gcc-4.5下打印0,在gcc-4.6下打印1。#includeenumVenueId:char{};intmain(intargc,char**argv){VenueIdv=(VenueId)'P';std::cout 最佳答案 根据标准,VenuedId具有char类型作为基础类型,因此v应包含char'P',v=='P'应该产生true。§7.2枚举声明Eachenumerationdefinesatypethatisdifferentfromallothertypes.Eachenumerationalsohasanun

c++ - 如何解析存储在文本缓冲区中的整数序列?

在C++中解析由流中的整数序列组成的文本非常简单:只需解码它们即可。当数据以某种方式接收并且在程序中很容易获得时,例如,接收base64编码的文本(解码不是问题),情况有点不同。数据位于程序的缓冲区中,只需要解码,不需要读取。当然,可以使用std::istringstream:std::vectorparse_text(char*begin,char*end){std::istringstreamin(std::string(begin,end));returnstd::vector(std::istream_iterator(in),std::istream_iterator());

c++ - 我不能再将 char[M][N] 类型分配给 gcc 4.9 上的 std::vector

在升级Ubuntu之前我一直使用gcc4.8,现在我有gcc-4.9.1-16。过去可以在没有警告的情况下编译并运行良好的代码现在不再可以编译。staticconstunsignedWIDTH=16;staticconstunsignedVSCALE=1;staticconstunsignedHEIGHT=WIDTH/VSCALE;staticconstunsignedFOOTER=2;typedefcharRow[WIDTH+1];typedefRowWorld[HEIGHT-FOOTER];std::vectorm_levels;Worldlevels[]={{"","","","

c# - 如何将struct中的char *从c#传递到c++

感觉我的问题和this类似.到目前为止,我有一个用C++定义的结构,如下所示:typedefstructstruct_type1{uint64nameLen;char*name;}STATUSSTRUCT;和一个函数定义为:externint_stdcallgetStatus(STATUSSTRUCT*status);大概是这样的功能:int_stdcallgetStatus(STATUSSTRUCT*status){status->nameLen=someLength;status->name=someName;return1;}请注意,我实际上无法更改C++代码(出于各种原因)或头

c++ - 通过传递 const char* 隐式选择字符串模板

假设我有我的自定义字符串类:classmy_string:publicstd::string{//...}我想制作一个模板化函数,它接受my_string两者。默认情况下:templateTStringdo_something(constTString&input){//...}但是当我调用它时:autoresult=do_something("abcdef");它调用(当然)do_something().如何强制它调用do_something没有明确指定类型(即写do_something("abcdef"),而不是do_something("abcdef"))?

c++ - clang 3.8 make 文件失败

挠了挠脑袋3个多小时后,我终于放弃了,决定向你们求助。我有几个文件,它们将编译成一个可执行文件。使用-stdlib=libc++flag,我会得到/usr/include/c++/v1/string:1938:44:error:'basic_string'ismissingexceptionspecification'noexcept(is_nothrow_copy_constructible::value)'basic_string::basic_string(constallocator_type&__a)^/usr/include/c++/v1/string:1326:40:no

c++ - Valgrind: "Invalid read"与 c_str 和 strtod

我正在使用strtod()来转换一些输入字符串。在用valgrind检查我的代码时,我遇到了“大小为8的无效读取”。如果b以“i”或“n”开头,则会显示该消息,这就是我到目前为止所发现的。另外,如果我直接创建一个constchar*(不调用c_str()),strtod似乎也可以。这是代码:#include#includeintmain(intargc,char**argv){char*a=0;std::stringb="i";constchar*c=b.c_str();doubled=strtod(c,&a);}和(详细的)valgrind输出:==12638==Memcheck,a

c++ - 从 unique_ptr<char[]> 到 unique_ptr<const char[]>

移动unique_ptr的最佳成语是什么?到unique_ptr?用例:假设您在某个缓冲区中创建了一个C字符串。为确保在出现异常时进行正确清理,可以使用unique_ptr引用该缓冲区.构造字符串后,您可能希望将其移动到某个类成员,声明为unique_ptr。以避免进一步修改字符串。这是我迄今为止最好的:std::unique_ptrres;std::unique_ptrbuf(newchar[4]);buf[0]='f';buf[1]=buf[2]='o';buf[3]='\0';res=std::unique_ptr(const_cast(buf.release()));单纯的移动

C++ map<char, static method pointer>?

这个问题在这里已经有了答案:Howtocreateclassobjectsdynamically?(3个答案)关闭7年前。我已经编写了一个非常基本的表达式解析器,我希望它是可扩展的,以便它可以解析用户定义的表达式类型。例如,如果在解析时遇到字符,我想创建一个用于解析以此字符开头的表达式的类的实例。我有两个问题:如何将字符关联到静态方法指针?我想使用一个静态方法来返回类的一个新实例,因为我无法获得指向类构造函数的指针。以下语法可能是错误的,但这就是想法:typedefstaticIValue*(*returnPtrIValue)();map...假设我有A类,B类扩展了A类,我可以初始化