草庐IT

max_chars

全部标签

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

c++ - 获取 std::min_element 和 std::max_element 以将迭代器返回到最后一个值?

当使用std::min_element和std::max_element时,如果范围内有多个元素是最低/最高,则返回的迭代器指向第一个这样的元素。但是我需要它指向最后一个这样的元素。在不编写自己的函数或反转输入数据结构的情况下,我该怎么做?我的输入数据结构是一个C风格的数组,例如intdata[N]并且C++11或Boost不可用(不是我的选择..) 最佳答案 你不必自己写数据结构,你可以使用std::reverse_iterator:typedefstd::reverse_iteratorRev;std::size_tidx=Re

c++ - 如何将 unsigned char[] 转换为 std::vector<unsigned char>

我正在尝试将其传递给我的项目的另一部分,该部分要求它是一个vectorunsignedcharvch[65];unsignedintsize()const{returnGetLen(vch[0]);}constunsignedchar*begin()const{returnvch;}constunsignedchar*end()const{returnvch+size();std::vectorRaw()const{return(vch,vch+size());}我得到了错误couldnotconvert'(constunsignedchar*)(&((constCPubKey*)th

c++ - 为什么这个编译器错误? - 没有匹配函数调用 'std::basic_ofstream<char>::open(std::string&)'

这适用于VisualStudio,并且适用于一台计算机上的GCC4.9.2。但在不同的计算机上,我认为它是相同的GCC4.9.2编译器,但它给了我这个错误。我错过了什么吗?怎么回事?#include#include#includeusingnamespacestd;intmain(){stringfilename;filename="teststring";ofstreamfout;fout.open(filename);fout.||===Build:Debuginfileiotest(compiler:TDM32GNUGCCCompiler4.9.2dw2)===|F:\Users

c++ - std::string 与静态常量的 char 数组

我想在我的cpp文件中的多个位置使用字符串常量。我应该使用std::string还是char[]?staticconststd::stringkConstantString="ConstantStringValue";staticconstcharkConstantString[]="ConstantStringValue";有人告诉我更喜欢后者,因为它“避免了静态分配”。char数组不是也必须静态分配吗? 最佳答案 是的,是的,它也必须静态分配。总是使用std::string除非你的探查器告诉你它值得惹恼像constchar[]这