C++中的字符串和格式化输入/输出

       关于C++,基础的概念便可不在叙述,这篇文章主要围绕于 C++中字符串相关内容 和 格式化输入\输出 ,那么,将离不开包含在头文件 stdio.h 中的 printf() 函数和 scanf() 函数。如果能够利用好这两个函数,那么不仅能与用户交互,还可根据个人喜好和任务要求格式化输出。

       首先,我们先来了解字符串

      1.1 字符串

       字符串(character string)是一或多个字符的序列,例如  "Welcome to Shaanxi!" ,它用双引号括起来,双引号的作用则是告知编译器它括起来的是字符串。关于字符串的储存,我将用一幅图来表示:

W e l c o m e   t o   S h a a n x i ! \0

C语言中字符串都是被储存在char类型的数组中,如上图所示,字符串中的每一个字符被储存在相邻的储存单元中,包括空字符 '\0' ,它用来标记字符串的结束。接下来,我们将通过一个简单的例子(程序1.1)来使用字符串,我使用的编译器是MSVS2022。

#include
#include
int main(void)
{
	char name[40];

	printf("你的名字是:");
	scanf("%s", name);
	printf("你好,%s.今天的你又比昨天更加努力了噢!\n", name);
	printf("你的名字占用%zd个字节", strlen(name));

	return 0;
}

输入zhangsan,打印出来结果是:

C++中的字符串和格式化输入/输出_第1张图片

 

这段代码中,输入的名字zhangsan以 %s 的形式打印出来,它在储存中占用9个字节,因为空字符'\0'的存在。

       1.2 strlen()函数与sizeof运算符的区别

       在程序1.1中,我们使用了包含在头文件string.h中的strlen()函数。由于sizeof以字节为单位给出对象的大小,而strlen()函数给出字符串中的字符长度(一个字符储存在一个字节中),那么,将这两种方法同时应用于字符串能否得到相同结果呢?答案显然是否定的。我将通过下面一个例子(程序1.2)来说明:

#include
#include
#define SENTENCE "Welcome to Shaanxi!"
int main(void)
{
	char name[40];

	printf("尊敬的旅客,请输入您的名字:");
	scanf("%s", name);
	printf("请稍等,正在查询信息中……\n");
	Sleep(5000);//Sleep()函数,程序将延时5s打印下一项
	printf("%s,欢迎来到陕西!(%s)\n", name, SENTENCE);

	printf("\n\"用sizeof运算符得出名字占用 %zd 个字节,", sizeof(name));
	printf("而strlen()函数得出名字占用 %zd 个字节。\"\n", strlen(name));
	printf("\"用sizeof运算符得出SENTENCE占用 %zd 个字节,", sizeof(SENTENCE));
	printf("而strlen()函数得出SENTENCE占用 %zd 个字节。\"\n", strlen(SENTENCE));

	return 0;
}

代码中 Sleep() 函数用于延时打印下一项printf,其中5000单位为毫秒。运行代码,根据提示输入名字:Zhangsan,得到如下结果:

你可能感兴趣的:(c++,开发语言)