草庐IT

char_bit

全部标签

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

c++ - 带有 char、double、int 和 t 的结构的大小

这个问题在这里已经有了答案:Whyisn'tsizeofforastructequaltothesumofsizeofofeachmember?(13个回答)关闭8年前。当我只运行代码片段时int*t;std::cout它给了我这样的结果:1844总计:17个。但是当我测试包含这些数据类型的sizeof结构时,它给了我24,我很困惑。额外的7个字节是什么?这是代码#include#includestructstruct_type{inti;charch;int*p;doubled;}s;intmain(){int*t;//std::cout:编辑我已经像这样更新了我的代码#includ

c++ - 将 int 存储在 char 数组中?

我想将一个4字节的int存储在一个char数组中...这样char数组的前4个位置就是int的4个字节。然后,我想将int拉出数组...此外,如果有人可以给我循环执行此操作的代码,则可以加分...IE将8个整数写入32字节数组。inthar=0x01010101;chara[4];inthar2;//writeharintocharsuchthat://a[0]==0x01,a[1]==0x01,a[2]==0x01,a[3]==0x01etc.....//then,pullthebytesoutofthearraysuchthat://har2==har谢谢大家!编辑:假设int是4

c++ - 使用 const char* 作为非类型参数的模板技巧

我非常清楚,直接将constchar*作为模板非类型参数传递是错误的,因为在两个不同的翻译单元中定义的两个相同的字符串文字可能具有不同的地址(尽管大多数编译器使用相同地址的时间)。可以使用一个技巧,请参见下面的代码:#includetemplatevoiddisplay(){std::cout();//(1')display();//(2')//display();//(3')doesn'tcompile//display();//(4')doesn'tcompile}基本上在(1)中,我们声明并定义一个带有外部链接的数组,然后可以将其用作(1')中的模板参数。我非常了解这一点。但是,

c++ - 在 I/O 中使用 char16_t 和 char32_t

C++11引入char16_t和char32_t便于使用UTF-16和UTF-32编码的文本字符串。但是库仍然只支持实现定义的wchar_t用于多字节I/O。为什么支持char16_t和char32_t未添加到库以补充wchar_t支持吗? 最佳答案 在提案中MinimalUnicodesupportforthestandardlibrary(revision2)表明只有图书馆工作组支持在字符串和编解码器方面支持新的字符类型。显然大多数人反对支持iostream、fstream、codecvt和正则表达式以外的方面。根据Portla

c++ - 将字符串分配给 char 数组

我想知道为什么第一个语句有效,为什么不能在c++中使用第二个语句chara[10]="iqbal";//itworksa="iqbal";//doesnotwork 最佳答案 严格来说,数组不是指针!而且数组(数组的基地址)不能是可修改的左值。即它不能出现在赋值运算符的左侧。数组仅在某些情况下衰减为指针。阅读本文SOpost了解数组何时衰减为指针。这里还有一个nicearticle这解释了数组和指针之间的区别另请阅读有关左值和右值的内容here以便您了解不能出现在=的LHS上的事物chara[10]="iqbal"; //itwor

c++ - 将一个 int append 到 char*

如何在c++中将整数append到char*中? 最佳答案 首先使用sprintf()将int转换为char*:charinteger_string[32];intinteger=1234;sprintf(integer_string,"%d",integer);然后要将其append到您的其他char*,请使用strcat():charother_string[64]="Integer:";//makesureyouallocateenoughspacetoappendtheotherstringstrcat(other_stri

c++ - 使用 vector<char> 作为缓冲区而不在 resize() 上初始化它

我想使用vector作为缓冲区。该界面非常适合我的需求,但是在将其调整为超出当前大小时会降低性能,因为内存已初始化。我不需要初始化,因为在任何情况下数据都会被一些第三方C函数覆盖。有没有办法或特定的分配器来避免初始化步骤?请注意,我确实想使用resize(),而不是像reserve()这样的其他技巧和capacity(),因为我需要size()在任何时候始终代表我的“缓冲区”的重要大小,而capacity()在resize()之后可能大于其大小,所以,我不能再依赖capacity()作为我申请的重要信息。此外,vector的(新)大小永远不会提前知道,所以我不能使用std::array