草庐IT

int_void

全部标签

c++ - 在 C++ 中将字节数组转换为 int

以下是从字节数组中获取int16(短)值的最有效方法吗?inline__int16*ReadINT16(unsignedchar*ByteArray,__int32Offset){return(__int16*)&ByteArray[Offset];};如果字节数组包含与机器相同的字节序格式的字节转储,则调用此代码。欢迎使用替代方案。 最佳答案 这取决于您所说的“高效”是什么意思,但请注意,在某些体系结构中,如果Offset为奇数,此方法将失败,因为生成的16位int将未对齐,您将得到一个当您随后尝试访问它时出现异常。仅当您可以保证

C++ 错误 : expected primary-expression before ‘int’

这部分代码中的每个整数都出现此错误;if(choice==2){inssort(int*a,intnumLines);}if(choice==3){bubblesort(int*a,intnumLines);}if(choice==4){mergesort(int*a,intnumLines);}if(choice==5){radixsort(int*a,intnumLines);}if(choice==6){return0;}那是我在main中调用函数的地方。如果您想知道我正在编写一个小程序,让用户可以在4种不同类型的排序算法之间对列表进行选择。如有任何帮助,我们将不胜感激。

c++ - 将指向数据成员的指针转换为 void *

我知道我可以获得指向类或结构的数据成员的指针,但以下代码的最后一行无法编译:structabc{inta;intb;charc;};intmain(){charabc::*ptt1=&abc::c;void*another_ptr=(void*)ptt1;}为什么我不能将ptt1转换为another_ptr?我们正在谈论指针,所以一个指针应该与另一个指针具有相似的维度(尽管在概念上不同)? 最佳答案 指向非静态类成员类型的指针与对象指针类型不同;他们的行为非常不同。事实上,您甚至不能取消引用指向带有*的成员的指针。要通过指向成员的指

c++ - 从 ‘void’ 到非标量类型的转换‘std::pair<std::basic_string<char, std::char_traits<char>

我在电子表格obj中有一堆对:std::stack>undoStack;我正在尝试弹出堆栈并将其分配给另一对:std::pairchange=spreadsheets.at(i).undoStack.pop();我收到这个错误:error:conversionfrom‘void’tonon-scalartype‘std::pair,std::allocator>,std::basic_string,std::allocator>>’requested这里出了什么问题? 最佳答案 stack::pop()返回void但您正试图将其分配

c++ - 使用 `A<int>::template B<int> x;` 定义变量是否符合 C++ 标准?

这个问题在这里已经有了答案:WhereandwhydoIhavetoputthe"template"and"typename"keywords?(8个答案)关闭8年前。gcc、vc++和clang接受以下代码。templatestructA{templatestructB{};};intmain(){A::By;//OKasexpectedA::templateBx;//AlsoOK!Isthisstandard-compliant?};使用A::templateBx;定义变量是否符合C++标准??

c++ - 使用 `void_t` 检查类是否具有具有特定签名的方法

此刻,我是usingthismethodtocheckifaclasshasamethodwithaspecificsignature.参加后WalterE.Brown'smetaprogrammingCppCon2014talk,我开始怀疑void_t可以在这种特殊情况下使用,使代码更清晰、更具可读性。但是我在考虑void_t方面遇到了麻烦-到目前为止我明白void_t可以帮助我在编译时确定表达式是否有效。例子:templatestructhas_type_data_member:false_type{};templatestructhas_type_data_member>:tru

c++ - 在 C++ 中将 struct 转换为 int

我有一个结构来表示具有如下位字段的29位CAN标识符。structcanId{u8priority:3;u8reserved:1;u8dataPage:1;u8pduFormat:8;u8pduSpecific:8;u8sourceAddress:8;}iD;在我的代码中,我想将这个结构复制到一个整型变量中。像这样的东西:intnewId=iD;但是我不确定这是否正确。有人可以对此发表评论吗?编辑:我可以在每个字段上使用移位运算符,然后使用按位或将它们放在正确的位置。但这首先使得使用带有位字段的结构毫无用处。 最佳答案 对于真正可移

c++ - 为什么我的结果数据返回为 void* 损坏?

我在一个拥有庞大遗留代码库的项目中工作,并且一直在尝试重新设计其中的一部分以摆脱旧的C风格代码。我遇到了一个问题,准备了一个简短的程序来解释。我使用的旧接口(interface)需要我将指向结果数据的指针作为void*传递,我想避免必须更改它。示例中的unique_ptr只是为了演示,在我的真实代码库中,处理数据的所有内容都使用智能指针来管理内存。我的问题是,结果数据被破坏了(见最后的输出行/最后一次调用printPayload);最后一切都是0,但转换为void*并返回似乎不是问题,如第二和第三输出行所示。这是一个与临时相关的问题吗?我不明白...我希望这类问题对你们中的一些人有帮助

c++ - 在 C++ 中命名 int 或 char 变量时, "n"或 "ch"前缀是常见前缀吗?

我目前正在浏览learncpp.com的C++教程,我看到他们的变量命名趋势是使用“n”前缀(即intnValue)和“ch”前缀为char变量(即charchOperation)命名int变量。这是不是我现在应该养成的行业普遍现象? 最佳答案 Isthissomethingthatiscommonplaceintheindustry?由于对somewhatmoreusefulconvention的误解,这种做法在二十或三十年前的Microsoft某些部门很常见。公司其他部分使用(标记变量表明它们的用途,在弱类型语言中,这有助于避免

c++ - 如何在编译时将 C 字符串转换为 int?

我希望能够将整数或double(或字符串)作为模板参数传递并且在某些情况下将结果转换为整数并将其用作模板参数输入类(class)。这是我尝试过的:templateclassA{//thefollowingworksfineintfun(){//thisfunctionshouldreturntheintintheboostmpltypepassedtoit//(e.g.itmightbeoftheform"123")returnstd::stoi(boost::mpl::c_str::value);}//thefollowingbreaksbecausestd::stoiisnotco