如何将""存储在C++字符数组中?

How to store "" in C++ char array?

本文关键字:字符 C++ 数组 存储      更新时间:2023-10-16

根据C++字符数组规则,它以\0个空字符结束。如果我想在C++字符数组中保存和打印,如何进行

#include <iostream>
using namespace std;
int main()
{
char name[] = {'H', 'o', 'n', 'd', 'a', ''};
cout << name; // how to print Honda
return 0;
}

转义字符必须转义

#include <iostream>
using namespace std;
int main()
{
char name[] = {'H', 'o', 'n', 'd', 'a', '', '0', ''};
// ^^^^^^^^^^
cout << name; // prints Honda
return 0;
}

您需要存储'''0',以及结尾的''来终止它。''有两个反斜杠,因为其中一个是转义符。

根据C++字符数组规则,它以\0 null字符结束。

没有规则规定char数组通常以null字符结尾。然而,字符字符串必须以这样的方式结束,并且传递到流的字符数组必须是字符串。

如果我想在C++字符数组中保存和打印\0,如何进行

不能将其作为字符串的一部分。

但是,你可以单独打印,作为一个独立的字符:

char nul = ''
std::cout << nul;

然而,如果您希望在终端中看到一些内容,那么您可能会感到失望,因为是一个不可打印的字符。如果将程序输出管道传输到hexdump或类似工具,则可以看到null字符(即值零)是程序输出的一部分。

如果您的目标是打印字符0,只需将这些字符作为字符串的一部分(如其他答案中所示,但为了完整起见,我将在此处包含这些字符)。请记住,转义符必须转义。

char name[] = {'H', 'o', 'n', 'd', 'a', '', '0' ''};

如果您所说的''是C字符串末尾的单个终止字符,则不必像其他答案所解释的那样显式存储它。注意,在终止的''单个字符之前存储额外的'''0'可打印字符与打印/存储终止的''不同。

根据C标准,您不能使用[f]printf( "%s", ... );打印C字符串的终止''值,7.21.6.1fprintf函数

如果不存在l长度修饰符,则参数应为指针到字符类型数组的初始元素。数组中的字符最多写入(但不包括)终止的null字符如果精度如果指定了,则写入的字节数不超过该数目。如果未指定精度或精度大于数组,数组应包含一个空字符。

您不能打印实际的''字符本身,因为它是非打印的,但您可以打印一个字符串来表示它:

void printStrAndTerm( FILE *fp, const unsigned char *str )
{
do
{
if ( *str )
{
fputc( *str, fp );
}
else
{
fputs( "\0", fp );
}
str++;
}
while ( *str );
}