草庐IT

char_bit

全部标签

c++ - const char* 连接

我需要像这样连接两个const字符:constchar*one="Hello";constchar*two="World";我该怎么做呢?我是从具有C接口(interface)的第三方库传递这些char*的,因此我不能简单地使用std::string来代替。 最佳答案 在您的示例中one和two是char指针,指向char常量。您不能更改这些指针指向的char常量。所以像:strcat(one,two);//appendstringtwotostringone.不会工作。相反,您应该有一个单独的变量(char数组)来保存结果。像这样

c++ - C++中string和char[]类型的区别

我知道一点C,现在我正在研究C++。我习惯用char数组来处理C字符串,但是当我查看C++代码时,我看到有使用字符串类型和char数组的示例:#include#includeusingnamespacestd;intmain(){stringmystr;cout和#includeusingnamespacestd;intmain(){charname[256],title[256];cout(来自http://www.cplusplus.com的两个示例)我想这是一个被广泛询问和回答(很明显?)的问题,但如果有人能告诉我在C++中处理字符串的两种方式(性能、API集成、方式每个都更好,

C++ : why bool is 8 bits long?

在C++中,我想知道为什么bool类型是8位长(在我的系统上),而只有一位就足以容纳boolean值?我以前认为这是出于性能原因,但是在32位或64位机器上,寄存器为32或64位宽,性能优势是什么?或者这只是这些“历史”原因之一? 最佳答案 因为每个C++数据类型都必须是可寻址的。如何创建指向单个位的指针?你不能。但是您可以创建一个指向字节的指针。所以C++中的boolean值通常是字节大小的。(它也可能更大。这取决于实现。主要是它必须是可寻址的,因此任何C++数据类型都不能小于一个字节)

c++ - 在调用 std::numeric_limits<unsigned char> 成员之前,一元 "+"的目的是什么?

我看到了thisexampleincppreference'sdocumentationforstd::numeric_limits#include#includeintmain(){std::cout::lowest()::min()::max()::lowest()::min()::max()::lowest()::min()::max()::lowest()::min()::max()我不明白中的“+”运算符::lowest()我已经测试过了,用“-”替换它,这也有效。这样的“+”运算符有什么用? 最佳答案 输出运算符当通过c

c++ - 为什么从字符串常量到 'char*' 的转换在 C 中有效但在 C++ 中无效

C++11标准(ISO/IEC14882:2011)在§C.1.1中说:char*p="abc";//validinC,invalidinC++对于C++来说,这是可以的,因为指向字符串文字的指针是有害的,因为任何修改它的尝试都会导致崩溃。但为什么它在C中有效?C++11还说:char*p=(char*)"abc";//OK:castadded这意味着如果将强制转换添加到第一个语句中,它将变为有效。为什么强制转换使第二个语句在C++中有效,它与第一个语句有何不同?不还是有害吗?如果是这样,为什么标准说没问题? 最佳答案 在C++03

c++ - stringstream、string 和 char* 转换混淆

我的问题可以归结为,从stringstream.str().c_str()返回的字符串在哪里存在内存中,为什么不能将它分配给constchar*?这个代码示例将比我解释得更好#include#include#includeusingnamespacestd;intmain(){stringstreamss("thisisastring\n");stringstr(ss.str());constchar*cstr1=str.c_str();constchar*cstr2=ss.str().c_str();coutstringstream.str().c_str()可以分配给constch

C++ 弃用从字符串常量到 'char*' 的转换

我有一个带有privatecharstr[256];的类为此我有一个显式构造函数:explicitmyClass(constchar*func){strcpy(str,func);}我称之为:myClassobj("example");当我编译它时,我收到以下警告:deprecatedconversionfromstringconstantto'char*'为什么会这样? 最佳答案 这是您在遇到以下情况时看到的错误消息:char*pointer_to_nonconst="stringliteral";为什么?好吧,C和C++在字符串

c++ - 对静态 constexpr char[] 的 undefined reference

我想在我的类(class)中有一个staticconstchar数组。GCC提示并告诉我应该使用constexpr,尽管现在它告诉我这是一个undefinedreference。如果我使数组成为非成员,那么它会编译。怎么回事?//.hppstructfoo{voidbar();staticconstexprcharbaz[]="quz";};//.cppvoidfoo::bar(){std::stringstr(baz);//undefinedreferencetobaz} 最佳答案 添加到您的cpp文件中:constexprcha

c++ - 为什么我不应该#include <bits/stdc++.h>?

我用我的代码发布了一个问题,其唯一的#include指令如下:#include我的老师告诉我这样做,但在评论部分我被告知我不应该这样做。为什么? 最佳答案 包括在StackOverflow上似乎越来越常见,也许是本学年新添加到国家类(class)中的内容。我想这些优势是这样模糊地给出的:你只需要写一个#include行。您无需查找所有内容都在哪个标准标题中。不幸的是,这是一个懒惰的hack,直接命名GCC内部header而不是像这样的单个标准header,和.它破坏了便携性并养成了糟糕的习惯。缺点包括:它可能只适用于那个编译器。你不

c++ - 如何将char数组转换为字符串?

使用字符串的c_str函数然后执行strcpy将C++string转换为char数组非常简单。但是,如何做到相反呢?我有一个char数组,例如:chararr[]="Thisisatest";要转换回:stringstr="这是一个测试. 最佳答案 string类有一个构造函数,它接受一个以NULL结尾的C字符串:chararr[]="Thisisatest";stringstr(arr);//Youcanalsoassigndirectlytoastring.str="Thisisanotherstring";//orstr=ar