草庐IT

unsigned-char

全部标签

c++ - std::vector< std::vector<unsigned char>> 或 std::deque< std::vector<unsigned char>>?

我有一个现有的算法,如果可能的话,我需要稍微优化它。目前无法在此算法中进行大量更改。该算法适用于std::vector>的实例.它看起来像这样:typedefstd::vectorinternal_vector_t;std::vectorinternal_vectors;while(fetchinglotsofrecords){internal_vector_ttmp;//reads1Mbofcharsintmp...internal_vectors.push_back(tmp);//somemorework}//usethisinternal_vectors算法在internal_v

c++ - 如何识别代码中const char*和const char[]的类型?

constchar*s1="teststirg";constchars2[]="teststirg";我想要一个方法告诉我s1是“char*”而s2是“char[]”,怎么写这个方法? 最佳答案 使用模板:templateboolIsArray(T(&a)[SIZE]){returntrue;}templateboolIsArray(T*p){returnfalse;}这将在运行时进行评估。用法:if(IsArray(s1))...if(IsArray(s2))...如果有兴趣,您可以使用一些高级技术,它会告诉您这是编译时间。编辑:

c++ - C/C++ 中的 Char 数据类型

我正在尝试用Java调用C++DLL。在它的C++头文件中,有如下几行:#definea'102001'#defineb'102002'#definec'202001'#defined'202002'a、b、c、d分别是什么数据类型?它们是char还是char数组?我应该转换成什么Java中相应的数据类型? 最佳答案 作为Mysticial指出,这些是multicharacterliterals.它们的类型是依赖于实现的,但它可能是Javalong,因为它们使用48位。在Java中,您需要手动将它们转换为long:staticlon

c++ - unsigned long 的类型不同于 Windows 上的 uint32_t 和 uint64_t (VS2010)

在Windows7、32位的VisualStudio2010上,unsignedlong似乎是与uint32_t和uint64_t截然不同的类型。看下面的测试程序:#include#includetemplatestructis_same_type{staticconstboolvalue=false;};templatestructis_same_type{staticconstboolvalue=true;};#defineTO_STRING(arg)TO_STRING_IMPL(arg)#defineTO_STRING_IMPL(arg)#arg#definePRINT_SAME

c++ - char* 到 const wchar_t * 转换

我需要将字符指针转换为w_char*以便使用ParseNetworkString()。我已经尝试自己寻找解决方案,虽然我找到了一种解决方案,但有一个问题阻止我使用它:b1naryatr0phy在另一个帖子中说:std::wstringname(L"SteveNash");constwchar_t*szName=name.c_str();这几乎对我有用,除了我不能直接传递字符串,因为它的值并不总是相同,这意味着我不能只把它放在引号中。如果我用函数调用替换参数,那么第一行会给我一个错误(例如:std::wstringname(LgetIpAddress());我试过std::wstring

c++ - 如何将 std::array<char, N> 转换为 char (&dest)[N]?

通过什么途径std::array到这样的功能:templatevoidsafe_func(char(&dest)[N]);?我试试这个:#includetemplateusingSafeArray=char[N];templatevoidsafe_func(char(&dest)[N]){}intmain(){SafeArraya1;safe_func(a1);std::arraya2;safe_func(*static_cast*>(static_cast(a2.data())));}它有效,但我怀疑,可能是我的Actor有问题,在其他编译器或平台上(我使用gcc/linux/amd

c++ - 为什么std::assoc_laguerre的第二个参数是unsigned int?

在C++17中,标准库中加入了很多特殊函数。一个功能是associatedLaguerrepolynomials.第二个参数需要一个unsignedint,但是mathematicaldefinition对实数也有效。有什么理由说它只限于非负整数吗?这仅仅是因为当n和k都是正整数时,二项式(n,k)更容易/更快/更简单地计算吗? 最佳答案 据我所知,C++特殊函数之父WalterE.Brown从未明确回答过您的拉盖尔问题。然而,当一个人读到whatBrowndidwrite,一个可能的动机变得清晰:Manyoftheproposed

c++ - char数组的对齐

STLvector通常是如何实现的?它有一个char[]的原始存储,它偶尔会按某个因素调整大小,然后在元素被push_back时调用placementnew(我应该注意一种非常有趣的语法形式-语言学家应该研究pushed_back这样的动词形式:)然后是对齐要求。所以一个自然的问题出现了,我怎样才能在char[]上调用一个placementnew并确保满足对齐要求。因此,我在2003年的C++标准中搜索“对齐”一词,并找到了这些:第3.9段第5条对象类型具有对齐要求(3.9.1、3.9.2)。完整对象类型的对齐方式是一个实现定义的整数值,表示字节数;对象分配在满足其对象类型对齐要求的地

c++ - uint8_t 和 unsigned char 链接错误

我正在使用模板函数:templatevoidfunc(constT&value){obj->func(value);}其中obj是类的对象:voidmy_object::func(int64_tvalue){...}voidmy_object::func(uint64_tvalue){...}voidmy_object::func(uint32_tvalue){...}voidmy_object::func(uint16_tvalue){...}voidmy_object::func(uint8_tvalue){...}问题在于uint8_t重载了my_object::func()覆盖

c++ - 我可以通过 C++ 中的(无符号)char* 读取任何可读的有效内存位置吗?

今天我的搜索foo似乎缺少。我想知道根据标准C++通过(unsigned(?))char*检查“任何”内存位置是否合法。任何位置是指程序内对象或数组(或数组内部)的任何有效地址。举个例子:voidpassAnyObjectOrArrayOrSomethingElseValid(void*pObj){unsignedchar*pMemory=static_cast(pObj)MyTypeIdentifyierx=tryToFigureOutWhatThisIs(pMemory);}免责声明:这个问题纯粹是学术性的。我不打算将其放入生产代码中!合法我的意思是,如果根据标准它真的合法,那就是