草庐IT

c++ - 将文件加载到 vector <char>

我想将文本文件的内容加载到vector(或任何字符输入迭代器,如果可能的话)。目前我的代码如下所示:std::vectorvec;std::ifstreamfile("test.txt");assert(file.is_open());while(!(file.eof()||file.fail())){charbuffer[100];file.read(buffer,100);vec.insert(vec.end(),buffer,buffer+file.gcount());}我不喜欢手动使用缓冲区(为什么是100个字符?为什么不是200、25或其他什么?),或者这需要大量的行。代码看

c++ - 字符串和 const char* 和 .c_str()?

我遇到了一个奇怪的问题,我想知道它为什么会这样。我有一个类,其中有一个返回std::string的成员函数。我的目标是将这个string转换为constchar*,所以我做了以下constchar*c;c=robot.pose_Str().c_str();//isthissafe??????udp_slave.sendData(c);问题是我在大师方面得到了一个奇怪的角色。但是,如果我执行以下操作constchar*c;std::stringdata(robot.pose_Str());c=data.c_str();udp_slave.sendData(c);我得到了我所期望的。我的问

c++ - boost::variant - 为什么 "const char*"转换为 "bool"?

我声明了一个boost::variant,它接受三种类型:string、bool和int。以下代码显示我的变体接受constchar*并将其转换为bool。boost::variant接受和转换不在其列表中的类型是正常行为吗?#include#include"boost/variant/variant.hpp"#include"boost/variant/apply_visitor.hpp"usingnamespacestd;usingnamespaceboost;typedefvariantMyVariant;classTestVariant:publicboost::static_

c++ - 为什么只有 char* 是 <Bad Ptr>,而不是其他数据类型?

我正在学习C++中的指针。例如在初始化指针时,double*pvalue1=nullptr;//okaychar*pvalue2=nullptr;//onlythissays,"0x00000000"(inthewatchwindowofVisualC++2010)int*pvalue3=nullptr;//okay为什么只有char类型指针给出BadPtr而其他指针类型没有?我现在不关心指向的值。我没有取消引用它们(这就是上面出现这些错误的原因)。我只是在查看这三个指针的监window口。 最佳答案 对于大多数指针类型,Visua

c++ - 初始化 char* 与 int*

这在C++中是可能的:constchar*ch="hello";但是这样的事情是不可能的:int*i={1,2,3};char*ch和int*i都是纯指针。为什么char*可以分配多个char,而int*不能分配多个int?我知道我们可以使用intx[]={1,2,3};但这不是问题。 最佳答案 constchar*ch="hello";有点像staticconstcharstring_literal[]={'h','e','l','l','o','\0'};constchar*ch=&string_literal[0];除了每个相

c++ - 为什么 ostream::write() 在 C++ 中需要 ‘const char_type*’ 而不是 ‘const void*’?

fwrite()C中的函数使用constvoid*restrictbuffer作为第一个参数,因此您可以将指针传递给您的struct直接作为第一个参数。http://en.cppreference.com/w/c/io/fwrite例如fwrite(&someStruct,sizeof(someStruct),1,file);但在C++中,ostream::write()需要constchar_type*,这会迫使您使用reinterpret_cast.(在VisualStudio2013中,它是constchar*。)http://en.cppreference.com/w/cpp/

c++ - 何时以及如何允许转换为 char 指针?

我们可以通过将指向该对象的T*转换为char*来查看T类型的对象的表示.至少在实践中:intx=511;unsignedchar*cp=(unsignedchar*)&x;std::cout这会在我的系统上输出511的表示形式:ff010000。这里(肯定)发生了一些实现定义的行为。哪些转换允许我将int*转换为unsignedchar*以及该转换需要哪些转换?我是否在施放后立即调用未定义的行为?我可以像这样转换任何T*类型吗?这样做时我可以依靠什么? 最佳答案 Whichofthecastsisallowingmetoconver

c++ - 直接 boost 序列化到 char 数组

Boost序列化文档断言,序列化/反序列化项目的方法是使用二进制/文本存档和底层结构上的流。如果我不想将序列化数据用作std::string,这可以正常工作,但我的目的是将其直接转换为char*缓冲区。如何在不创建临时字符串的情况下实现这一点?解决了!对于那些想要一个例子的人:charbuffer[4096];boost::iostreams::basic_array_sinksr(buffer,buffer_size);boost::iostreams::stream>source(sr);boost::archive::binary_oarchiveoa(source);oa

c++ - 将 vector<string> 转换为 char** C++

我有一个vector多变的。我需要将它传递给接受char**的方法作为输入参数。如何做到这一点?如果可能的话,我需要传递一个可写的。更新1:在用于创建服务方法的工具中,我将参数指定为std::vector,但它会自动将限定符设置为&,这意味着该工具生成的我的方法定义将如下所示:std::stringSvcImpl::myMethodname(conststd::stringpar1,conststd::vector&par2,conststd::vector&par3){}此方法会自动调用,并使用传递的参数中的值。现在从这个方法内部,我将调用lib文件夹中的dll中的一个方法,如下所示

c++ - 如何确定 unsigned char* 的长度?

如何确定unsignedchar*的长度? 最佳答案 对于指针的实际大小:size_ts=sizeof(unsignedchar*);如果你想要字符串的长度:unsignedchar*bla=(unsignedchar*)"blabla";ints=strlen((char*)bla); 关于c++-如何确定unsignedchar*的长度?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/quest