草庐IT

char_sequence

全部标签

c++ - 参数列表中char[N]和char(&)[N]的区别

以下代码无法编译:templatevoidf(char[N]){}intmain(){charbuf[10];f(buf);}如果我将char[N]更改为char(&)[N],它会起作用。那么它们之间有什么区别呢? 最佳答案 你已经被C的向后兼容性所困扰。当你声明一个像这样的函数时:intf(charc[10]);您声明了一个函数,其参数类型为char*。编译器会为您衰减参数类型。问题是:intf(charc[5]);声明相同函数。这就是C的工作方式,C++保留了它以实现兼容性。intf(char(&c)[10]);声明一个函数,其

c++ - "const char*"类型的值不能用于初始化 "char *"类型的实体

我有这样的代码,但我一直收到此错误:Avalueoftype"constchar*"cannotbeusedtoinitializeanentityoftype"char*"这是怎么回事?我已经阅读了以下主题,但无法看到我的答案的任何结果,因为它们都是从char到char*或char*到char:Valuetypeconstcharcannotbeusedtoinitializeanentityoftypechar*Valueoftypechar*cannotbeusedtoinitializeanentityoftype"char"#include;usingnamespacestd

c++ - 无法在声明时使用初始化列表初始化 const char*/string 数组的 vector

最初我开始尝试在声明时使用初始化列表初始化constchar*[3]的vectorvectorv={{"a","b","c"}};这给出了错误matrixmustbeinitializedwithabrace-enclosedinitializer我觉得可能是constchar*的缘故,虽然看起来很奇怪,改成了字符串vectorv={{"a","b","c"}};但是错误依然存在。我尝试了几种牙套组合都无济于事。是否真的可以在声明时使用初始化列表初始化此结构? 最佳答案 编译失败因为std::vectorrequiresitsTto

c++ - 为什么 strlen(s) 与 s 的大小不同,为什么 cout char 显示的是字符而不是数字?

我写了一段代码来计算一堆单词中有多少个'e'字符。例如,如果我键入“Ireadthenews”,则显示有多少e的计数器应该是3。#include#includeusingnamespacestd;intmain(){chars[255],n,i,nr=0;cin.getline(s,255);for(i=1;i关于C++中的字符,我有两个不清楚的地方:在上面的代码中,如果我将strlen(s)替换为255,我的代码将无法正常工作。我只能输入一个字,程序就停止了。我在学校被教导strlen(s)是字符串s的长度,在本例中,正如我声明的那样,它是255。那么,为什么可以我不是只输入255,

来自 char 的 C++ 枚举

好的,我是C++的新手。我拿到了Bjarne的书,我正在尝试遵循计算器代码。但是,编译器会吐出关于此部分的错误:token_valueget_token(){charch;do{//skipwhitespaceexcept'\n'if(!std::cin.get(ch))returncurr_tok=END;}while(ch!='\n'&&isspace(ch));switch(ch){case';':case'\n':std::cin>>WS;//skipwhitespacereturncurr_tok=PRINT;case'*':case'/':case'+':case'-':c

c++ - std::vector<char> 中元素的字节对齐方式是什么?

我希望元素是1字节对齐的,类似于std::vector是4字节对齐的(或任何大小int恰好在特定平台上)。有谁知道标准库容器是如何对齐的? 最佳答案 容器的元素至少在该实现中具有它们所需的对齐方式:ifint在您的实现中是4对齐的,那么vector的每个元素是一个int因此是4对齐的。我说“如果”是因为大小和对齐要求之间存在差异-只是因为int就标准而言,大小为4并不一定意味着它必须是4对齐的。不过,这很常见,因为int通常是机器的字长,并且大多数机器在字边界上的内存访问方面具有优势。所以对齐int是有意义的即使这不是绝对必要的。例

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

chararr[3];arr="hi";//ERRORcin>>arr;//andatruntimeItypehi,whichworksfine.1)有人可以向我解释为什么吗?2)"hi"的类型到底是什么,我知道它叫文字串。但它也只是一个字符数组吗?3)不是cin>>arr;就像将arr分配给您在运行时键入的内容一样? 最佳答案 C++中的数组不是实际类型,只是一系列值的结构化表示,而不是指针(如果您在任何地方都能找到它的话)(它们会退化为指针)。您不能像使用其他类型(包括赋值)那样使用它们。选择是要么增加对数组的大量支持,要么让它

c++ - 从 const char * 到 const std::string & 的转换

我认为以下代码会产生错误:#include#includestaticvoidpr(conststd::string&aStr){std::cout但gcc4.1.2编译成功。是不是std::string的构造函数妨碍了创建std::string的实例?我认为它不应该,因为引用只是一个变量的别名(在这种情况下,没有引用所引用的std::string类型的变量)。有没有人解释为什么代码编译成功?提前致谢。 最佳答案 是的,给定一个常量的引用,编译器可以/将合成一个临时的(在这种情况下是std::string类型)并将引用绑定(bind

c++ - 如何将 Char 转换为 Float

如何在AVRstudio4中将unsignedchar值转换为float或double?请帮助我是初学者,我的问题听起来也很愚蠢:/就像我有一个charkeyPressed我已经使用lcd_gotoxy(0,0);lcd_puts(keyPressed);现在我想用这个值来计算一些东西..如何将其转换为float或double?请帮忙 最佳答案 例如,如果您希望字符'a'在float中显示为65.0,那么方法是unsignedcharc='a';floatf=(float)(c);//byexplicitcastingfloatfc

isDigit(c) - char或int类型?

我已经编写了以下代码来测试给定输入是否为数字。#include#include#includeusingnamespacestd;main(){charc;cout>c;if(isdigit(c))//intisdigit(intc)orcharisdigit(charc){cout我的问题是:输入变量类型应该是什么?char还是int?看答案不幸的是,这种情况比其他答案所指出的要复杂得多。首先:代码的第一部分是正确的(无视多字节编码);如果您想阅读一个char和cin,您必须使用char变量>>操作员。现在,关于isdigit:为什么需要int代替char?一切都来自c;isdigit它的同