草庐IT

CHAR_BIT

全部标签

c++ - 缓存 const char * 作为返回类型

阅读了一些关于我的C++的内容,发现了这篇关于RTTI(运行时类型识别)的文章:http://msdn.microsoft.com/en-us/library/70ky2y6k(VS.80).aspx.好吧,那是另一个主题:)-然而,我在type_info类中偶然发现了一个奇怪的说法,即关于::name方法。它说:“type_info::name成员函数返回一个constchar*到一个以null结尾的字符串,表示该类型的人类可读名称。内存指向已缓存,永远不应直接释放。”你怎么能自己实现这样的东西!?我以前经常在这个确切的问题上苦苦挣扎,因为我不想为调用者创建一个新的char数组来删除

c++ - 错误 :incompatible types in assignment of 'const char[5]' to 'char[10]'

我已经将c定义为charc[][10]在函数定义中并像c[i]="gray";一样使用它怎么了?我在网上搜索,它显示相同的语法。谢谢。 最佳答案 您不能对数组使用赋值(=)。如果将c更改为指针数组,这可能会起作用,具体取决于您需要使用它做什么。constchar*c[20];c[i]="gray";或者如果声明的类型必须是数组的数组,您可以使用strncpy:charc[20][10];strncpy(c[i],"gray",sizeof(c[i])); 关于c++-错误:incompa

c++ - 在 C/C++ 中清除 char 数组的最佳方法是什么?

我一直在寻找在C/C++中清空char数组的方法。我想出了这段代码:chartestName[20];for(inti=0;i它已经工作了一段时间了,但是当我尝试strlen时,结果总是比输入的单词多两个。例如,我输入单词dog输出将是5。为什么?我的字符数组没有被清除吗?这是我的代码:chartestName[20];voidloop(){if(Serial.available()){Serial.println("Waitingforname...");index=0;for(inti=0;i输出截图:输出为文本:Namereceived:dogThesentenceentered

c++ - 如何从 std 字符串 (c_str()) 设置 char * 值不起作用

我不知道,但这对我不起作用,当我尝试从返回标准字符串的函数中设置char*值时,我得到了垃圾值:stringfoo(){stringtmp="dummyvalue";returntmp;}char*cc=(char*)foo().c_str();//ifiremovethecastingimgettingerror//wheniprinttheccigetgarbageprintf("%s",cc); 最佳答案 cc指向的数据的生命周期与它来自的字符串的生命周期相同(充其量-如果您修改字符串,它甚至更短)。在你的例子中,foo()的

c++ - 如何有效地将 std::vector<char> 复制到 std::string

这个问题是这个Howtoefficientlycopyastd::stringintoavector的反面我通常以这种方式复制vector(空终止字符串)std::strings((char*)&v[0]);或者(如果字符串已经被声明)像这样s=(char*)&v[0];它完成了工作,但也许还有更好的方法。编辑C风格的转换很丑陋,有人告诉我这又如何s=reinterpret_cast(&vo[0]); 最佳答案 只需使用迭代器构造函数:std::strings(v.begin(),v.end());(编辑):或者使用char-poi

c++ - 具有模板参数大小的 Const char 数组与 char 指针

我今天在一些代码中看到了以下类型的构造:templateunsignedintf(constchar(&a)[N]);有这个比有任何合理的点:unsignedintf(constchar*a);我隐约理解后者的指针共享含义,但它真的很糟糕,需要用两倍大小的晦涩代码代替吗?(不幸的是,我不能问代码的作者,否则我会) 最佳答案 将任何原始指针传递给函数的目的是调用者有一些想法:它指向什么。它指向多少。作为输入参数的C风格字符串推断后者,因为假设“多少”被认为是到达空字符终止符。但是如果您不传递C风格的字符串怎么办?如果它只是零个或多个c

c++ - 将 _TCHAR* 转换为 char*

我正在尝试获取asimpleOpenCVsample在Windows上使用C++工作,而我的C++不仅仅是生锈的。Thesample相当简单:#include#include#includeusingnamespacecv;usingnamespacestd;intmain(intargc,char**argv){if(argc!=2){cout当我在VisualStudio2012中创建一个新的简单C++控制台应用程序(使用ATL)时,我得到了一个不同的main模板:int_tmain(intargc,_TCHAR*argv[])所以在我将文件名发送到OpenCV的imread函数之

c++ - 如何在 C 中找到 "char *"数组的长度?

我声明了以下数组:char*array[2]={"One","Two"};我将这个数组传递给一个函数。如何在函数中找到这个数组的长度? 最佳答案 将数组传递给函数后,不费吹灰之力就无法找到数组的长度。你需要:使用存储大小的容器,例如vector(推荐)。同时传递尺寸。这可能需要对现有代码进行最少的修改,并且是最快的修复方法。使用标记值,就像C字符串那样1。这使得查找数组的长度成为一个线性时间操作,如果您忘记了标记值,您的程序可能会崩溃。在大多数情况下,这是最糟糕的做法。在传递数组时使用模板来扣除数组的大小。您可以在这里阅读:Howd

c++ - 将未知长度的 char** (c) 转换为 vector<string> (c++)

这个问题在这里已经有了答案:convertinganarrayofnullterminatedconstchar*stringstoastd::vector(4个答案)copyingcarrayofstringsintovectorofstd::string(4个答案)关闭9年前。如何将Cchar**转换为C++vector?是否有一些内置功能可以用来执行此操作,还是通过一系列迭代步骤来完成它更好?编辑:由于各种原因,C数组中的元素数量未知。我可以将其作为另一个参数传递,但这是绝对必要的吗?

c++ - 使用流提取到 char 指针时出现段错误

我有一个问题。我有以下结构:typedefstruct{intvin;char*make;char*model;intyear;doublefee;}car;然后我有以下方法询问用户汽车的品牌并将其作为字符指针返回:char*askMake(){char*tempMake=NULL;cout>tempMake;returntempMake;}然后我有一辆临时车struct:cartempCar;我正在尝试以这种方式为其分配一个值:tempCar.make=askMake();它编译得很好,但我在运行时遇到了段错误。 最佳答案 您还没