一.
现阶段:从c开始学起的,c++只知道一些基本函数的使用方法。
二.
1)用于输入字符串数组的函数
c语言输入字符串数组的函数包括:gets,fgets。
①gets():渐渐被淘汰掉了,因为该函数有安全隐患,无法处理数组越界问题。
(用法:gets(char *p),只需传入一个数组作为参数)
②fgets():相比①安全性高了,因为该函数会限定输入数组的长度,现阶段我就用的这个输入字符串数组。
(用法:fgets(char *p,int lenth,FILE *stream))
其中stream
:文件指针。用于指定从哪个文件中读取字符串。在从标准输入读取字符串时,可以将其设置为 stdin
。)
注意:两者在读取时都读取回车产生的‘\n’,并把它放到字符串数组中,这也是这俩函数不太好用的一个点吧,一般做题要把这个‘\n'用替代的方法换成’\0'。
2)c++输入字符串数组的函数包括:getline,cin.getline
①getline():好用!!!不仅会限定输入数组的长度,保证安全性,而且还能把回车产生的‘\n’给“销毁”了,不但不会把它放到字符串数组中,而且还不会滞留在缓冲区中!
but有个重要的点:cin.getline
函数将字符串存储在字符数组中,而 getline
函数将字符串存储在 string
类型的对象中。这是两种不同的数据类型,使用时需要根据具体的需求和编程习惯来选择。对于string和字符串数组,两者各有优劣。
而且由于我现在还是用c语言写代码,不希望代码中c和c++一起使用,所以这个函数目前用不上,等我学完c上手c++再试试用这个处理字符串!
(用法:istream& getline(istream& is, string& str, char delim)其中str
是一个字符串对象的引用,用于保存读取到的数据。注意:getline是把读取到的放到string中而不是char*数组中哦!
;delim是指定分隔符,如果不设置会默认是‘\n');
istream&:未知术语,查了一下:istream&
是一个 C++ 中的流(stream)类型,表示输入流,常用于重载输入运算符 >>
。它通常被用来从标准输入设备(如键盘)或文件中读取数据,并将读取的数据放入程序中。常用还是cin标准输入。
②cin.getline():也较为常用,和c函数库的fgets一样,会把换行符读取到字符串数组中。
(用法:cin.getline(char* s, streamsize count, char delim) 其中streamsize
是 C++ 标准库中的一个整数类型,用于表示流操作的大小或位置。它通常用作流操作函数的参数类型,可以与int进行区分;)
三.
scanf与cin输入字符串 = =
缺点:遇到空格等特殊符号会停止读取,比如一个句子,用scanf和cin只能读句子的第一个单词。
but如果用do-while一个一个读取也不是不行,只是效率……确实够低,而且代码相对冗长
四.
与本文主题无关:
c中读取单个字符的函数有getch(),getchar()
上网查了这俩的区分与用法:
-
区别:
getch
函数是非标准函数,在<conio.h>
头文件中定义。它通常在 Windows 环境下使用,用于从控制台窗口中立即获取一个字符,无需按下 Enter 键。getchar
函数是标准函数,在<stdio.h>
或<cstdio>
头文件中定义。它用于从标准输入流中获取一个字符,并需要用户按下 Enter 键才能接受输入。它是跨平台的标准函数,可以在各种编译环境中使用。
-
用法:
getch
的使用方式是直接调用该函数,它会立即读取一个字符并返回字符的 ASCII 值(整数类型)。示例代码如下:#include <conio.h> // ... int ch = getch();
getchar
的使用方式是调用该函数,并将返回的字符保存在int
类型的变量中。示例代码如下:#include <stdio.h> // ... int ch = getchar();
需要注意的是,getch
函数在某些编译器或操作系统中可能不可用,而且它是一个过时的函数,不建议在现代 C/C++ 程序中使用。如果要在控制台环境下获取单个字符,可以考虑使用 <conio.h>
中的其他函数(如 _getch
或 _getwch
),或者使用更现代化的方法,如使用 <iostream>
头文件中的 std::cin.get()
函数。
总结起来,getch
是非标准的、只在 Windows 环境下可用的函数,可以立即读取一个字符而无需按下 Enter 键。而 getchar
是标准函数,用于从标准输入流中获取一个字符,并需要用户按下 Enter 键才能接受输入。
③我觉得把getch()没啥好用的,也就放在while里面用char ch=getch()能发挥些许用处?但getchar()就不一样咯,常用于清理缓冲区的空格啊,换行符啊等等= =还是有点小用处。
五.
以上大多是个人现阶段对用于输入字符串函数的拙见,带有很强的主观认识。学无止境,写这篇文章的目的是希望等我之后学深一点,回头再看一遍时能找到一些错误,并从中得到新的启发。未来道阻且长,行则将至!