草庐IT

CHAR_LENGTH

全部标签

c++ - 带有 unsigned char 的 for 循环给出了意想不到的行为

我正在练习面试问题,但很难回答这个基本问题:Howmanytimeswillthisloopexecute?unsignedcharhalf_limit=150;for(unsignedchari=0;i我的想法是,由于unsignedint仅达到255,它将永远执行,因为当我在unsignedchar为255时增加它时它会恢复为0?然而,这种想法是错误的,更奇怪的是,这是cout给我的输出:!"#$%&'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~�������

c++ - VS 2017 不会隐式地将 const char* 转换为 char*

这个问题在这里已经有了答案:Conversionfromstringliteraltochar*isdeprecated[duplicate](2个答案)关闭4年前。我最近安装了VS2017,遇到了一个奇怪的问题。基本上,如果不明确地将它们转换为(char*),我就不能使用硬编码字符串。如果我说类似Function("test")的话,它只会抛出一个错误,指出constchar*与char*不兼容。我真的不想坚持使用VS2015:(。有人知道如何让VS认识到它们是同一回事吗?非常感谢。

JSON parse error: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is

JSONparseerror:Illegalcharacter((CTRL-CHAR,code31)):onlyregularwhitespace(\r,\n,\t)isallowedbetweentokens;nestedexceptioniscom.fasterxml.jackson.core.JsonParseException:Illegalcharacter((CTRL-CHAR,code31)):onlyregularwhitespace(\r,\n,\t)isallowedbetweentokensat[Source:(org.springframework.util.Strea

c++ - unsigned char 数组到 unsigned int 通过 memcpy 返回到 unsigned char 数组被反转

这不是跨平台代码...所有内容都在同一平台上执行(即字节序是相同的......小字节序)。我有这个代码:unsignedchararray[4]={'t','e','s','t'};unsignedintout=((array[0]unsignedcharbuff[4];memcpy(buff,&out,sizeof(unsignedint));std::cout我希望buff的输出是“test”(由于缺少“/0”而带有垃圾尾随字符),但输出却是“tset”。显然,更改我要移动的字符的顺序(3、2、1、0而不是0、1、2、3)可以解决问题,但我不明白这个问题。memcpy是否没有按我预

c++ - 我可以确定 char * 参数寻址了多少有效内存吗?

我有这样的功能://stringisanull-terminatedchararray.ReplaceallainthestringwithbvoidReplaceCharInString(char*string,chara,charb){//loopoverthestringcharbychar,tofindall"a"sandreplacethemwith"b"}我正在做防御性编程。问题是客户端的实现回复真正传递了一个字符数组。如果传入单个字符的地址,程序肯定会进入错误状态(可能会崩溃)。我该如何检查并避免这种情况?(我知道如果我传入std::string对象,问题当然就消失了)

C++ ifstream 到 char *

我的代码用ifstream读取一个文件并解析它,现在我改变了一些东西,我不需要读取文件,因为是从另一个地方读取的,所以我有一个char*而不是ifstream...如何更改我使用ifstream.get()的代码?再次感谢 最佳答案 您只需将char*放入std::stringstream。std::stringstreambuffer(your_string);然后您可以像使用std::ifstream一样使用buffer(您无法打开或关闭它)。理想情况下,您的解析方法会将对std::istream的引用作为参数,然后它不会介意它

c++ - 如何从 std::ifstream 将文件读入 unsigned char 数组?

所以通常我会做这样的事情:std::ifstreamstream;intbuff_length=8192;boost::shared_arraybuffer(newchar[buff_length]);stream.open(path.string().c_str(),std::ios_base::binary);while(stream){stream.read(buffer.get(),buff_length);//boost::asio::write(*socket,boost::asio::buffer(buffer.get(),stream.gcount()));}strea

c++ - 使用 strdup() 后将 char* 转换为 int

为什么在使用strdup(value)(int)value后返回与之前不同的输出?如何获得相同的输出?我的简短示例出错了,请使用长示例:这里是完整的测试代码:#include#includeintmain(){//TheFirstPartchar*c="ARD-642564";char*ca="ARD-642564";std::cout>x;} 最佳答案 因为在您的情况下数组衰减为指针,所以您正在打印一个指针(即,在非奇异计算机上,一个内存地址)。不能保证指针适合int。在代码的第一部分,c和ca不必相等。您的编译器执行某种内存优化

c++ - 如何在 "std::vector<char>"容器中查找单个单词

我有一个混合的二进制文件(即图像)和一些人类可读的数据(即HTTPheader)存储在“std::vector”容器中。(数据以“CRLFCRLF(\r\n\r\n)”指示符分隔)谁能建议如何在“std::vector”容器中找到“\r\n\r\n”的开始位置?是否可以使用STL库执行类似“std::size_tpos=data.find("\r\n\r\n");(其中数据为“std::vector”)”之类的操作?谢谢。 最佳答案 您不需要将要查找的模式放入容器中。一个C字符串就足够了。std::vectorv=....;cons

c++ - 在 C++ 中比较 char 和 Int

在C++中,由于隐式类型转换,可以将int与char进行比较吗?还是我误解了这个概念?比如,我能不能做intx=68;chary;std::cin>>y;//Assumingthattheuserinputs'Z';if(x还是我们需要先将其转换为int?所以if(x(y)){cout 最佳答案 两个版本的问题是您无法确定由负值/大值产生的值(如果char确实是符号字符)。这是实现定义的,因为实现定义了char是指signedchar还是unsignedchar。解决此问题的唯一方法是首先转换为适当的有符号/无符号char类型:if