草庐IT

single_char

全部标签

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++ - eclipse CDT : How to manage multiple main() functions in a single C++ project?

我正在开始开发一个由多个模块组成的项目。我将使用专用的测试台验证这些模块中的每一个,每个模块都有它们的main()函数。我想避免为每个测试平台及其main()函数创建一个Eclipse项目。我读到了WorkingSets在我的项目中只显示与特定测试平台相关的文件的想法正是我所寻找的。但是,在构建阶段,Eclipse会继续构建所有项目文件,而不仅仅是当前的工作集文件。然后,由于多个main()函数,我遇到了链接器错误。如何将Eclipse配置为仅构建工作集的文件?是否有另一种方法可以在单个项目中分别构建多个程序,即应用程序及其组件测试平台? 最佳答案

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++ - Clang 与 GCC : Single-colon in Enum usage

以下代码使用g++-std=c++11编译,但不使用clang++-std=c++11。问题在此上下文中,单冒号“运算符”的含义是什么?澄清/编辑:GCC如何解释代码?如何让GCC不编译这段代码?(这里假设Clang遵循C++标准。)是否有针对此的标志?代码用g++-std=c++11main.cpp和clang++-std=c++11main.cpp编译。我正在使用GCC4.8和Clang6.0.0(主干)。#include#includeenumDir{LEFT,RIGHT};intmain(intargc,char**argv){//Interestingline:Noticet

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++ - 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);}免责声明:这个问题纯粹是学术性的。我不打算将其放入生产代码中!合法我的意思是,如果根据标准它真的合法,那就是

c++ - cin 对于一个 int 输入一个 char 会导致应该检查输入的循环变得疯狂

这是我的游戏的一个功能,它会要求输入并输入“iAuswahl”!然后while循环检查它是否是我想要的值之一1-9如果不是它激活并且应该要求新的输入。它为int做的女巫。但是,如果我输入一个像r这样的字符,它会变得疯狂,并且只是不断地把我的cout还给我并跳过cin!我的问题是它为什么这样做以及我该如何阻止它?voidzug(stringsSpieler,intiDran){intiAuswahl;charcXO='O';if(iDran==1){cXO='X';}cout>">iAuswahl;cout>iAuswahl;}feldfuellen(iAuswahl,cXO);}

c++ - 将 char 指针分配给数组

voidfun(chararr[]){cout为什么我允许传递一个char指针并在数组中接收它,但不能直接将char指针分配给数组。据我所知,当我们将参数传递给函数时,赋值是隐式发生的。那么为什么会有这种差异在行为上? 最佳答案 声明voidfun(chararr[]){相当于voidfun(char*arr){这意味着,在这种情况下,不需要将字符数组的大小传递给函数。现在arr指向与ptr相同的位置。但是如果是chararr2[]=ptr;编译器不知道ptr的大小,因为它是指向字符串文字hello的第一个字符的指针,因此编译器无法