当前位置:首页C++程序设计 > 正文

C++中字符数组存储的字符串的输入和输出函数,字符串string的输入和输出函数的区别和关联

作者:野牛程序员:2023-04-09 17:40:53C++程序设计阅读 2654
函数名称输入/输出类型适用于字符数组存储的字符串适用于字符串string类型
cin输入
cout输出
getline输入
scanf输入×
printf输出×
gets输入×
puts输出×

C++中字符数组存储的字符串的输入和输出函数主要有cincoutgetline,其中:

  • cin函数可用于从标准输入流(键盘)读取字符数组存储的字符串,并将其存储在指定的字符数组中。

  • cout函数可用于向标准输出流(屏幕)输出字符数组存储的字符串。

  • getline函数可用于从标准输入流(键盘)读取一行字符数组存储的字符串,并将其存储在指定的字符数组中。

字符串string的输入和输出函数包括cincout,与字符数组不同的是,字符串string还可以使用getline函数进行输入,但不能使用scanfprintfgetsputs函数,因为这些函数都是C语言标准库函数,不适用于C++字符串string类型。

总之,如果要处理字符数组存储的字符串,可以使用C++标准库提供的cincoutgetline函数,而如果要处理字符串string类型的字符串,应该使用C++标准库提供的cincoutgetline函数,避免使用C语言标准库函数。


scanf,,printf,gets,puts 的功能及区别

以下是详细的讲解:

  1. scanf函数:用于从标准输入流(键盘)读取数据,并根据指定的格式进行解析,将解析出的结果存储到指定的变量中。在输入字符数组存储的字符串时,需要使用 %s 格式,但它并不支持限定输入字符串的长度,容易发生缓冲区溢出的问题。

  2. printf函数:用于向标准输出流(屏幕)输出格式化的数据。在输出字符数组存储的字符串时,需要使用 %s 格式,但同样也没有限定输出字符串的长度,容易发生缓冲区溢出的问题。

  3. gets函数:用于从标准输入流(键盘)读取一行字符数组存储的字符串,将其存储到指定的字符数组中。但它同样没有限定读取的字符串长度,容易发生缓冲区溢出的问题,因此不安全。

  4. puts函数:用于向标准输出流(屏幕)输出一个以 NULL 结尾的字符串(即字符数组存储的字符串),并自动换行。由于它只输出一个字符串,不需要格式控制符,因此相对来说比较安全。

综上所述,虽然这些函数都可以用于处理字符数组存储的字符串,但都没有考虑到输入和输出字符串的长度限制,容易引起缓冲区溢出的安全问题。因此,除非是在特殊的情况下(如特别小的程序或调试目的),否则不建议使用这些函数,而应该使用C++标准库提供的cincoutgetline函数,或使用字符串string类型进行字符串的输入和输出。

函数名称语法格式
cincin >> 变量名cin.getline(字符数组,长度)
coutcout << 字符串或变量名
getlinegetline(cin, 字符串或字符数组, 分隔符)
scanfscanf("格式控制字符串", 变量地址)
printfprintf("格式控制字符串", 输出数据)
getsgets(字符数组)fgets(字符数组,长度,文件指针)
putsputs(字符串)

注意:在使用 gets 函数时需要注意防止缓冲区溢出,推荐使用 fgets 函数代替。另外,在使用 scanf 函数时,需要注意格式控制字符串与变量类型之间的匹配,否则可能会出现数据读取错误的情况。

getline(cin, 字符串或字符数组, 分隔符) 和这个 getline(cin, 字符串或字符数组) 有什么区别

getline(cin, 字符串或字符数组, 分隔符)getline(cin, 字符串或字符数组) 的区别在于,前者可以指定一个分隔符,用于将输入的一行数据按照指定分隔符进行分割,而后者不指定分隔符,则默认使用换行符作为分隔符。

例如,我们有如下输入:

Hello World

如果使用 getline(cin, 字符串或字符数组),将读取整行字符,直到遇到换行符为止,因此读取到的内容为 "Hello World"

如果使用 getline(cin, 字符串或字符数组, ' '),将会按照空格将整行字符进行分割,因此读取到的内容为 "Hello"。如果再次调用一次 getline(cin, 字符串或字符数组, ' '),将读取到分隔符后面的内容,即 "World"

需要注意的是,使用分隔符分割字符串时,分隔符本身不会被读取到字符串中。而如果使用 getline(cin, 字符串或字符数组),则将整行字符读取到字符串中,包括换行符。


换行符 怎么从键盘上面输入的呢?

在键盘上输入换行符,通常可以通过按下回车键(Enter键)来完成。回车键通常被用作输入设备的结束符,输入设备在检测到回车键后,会将输入的内容发送给计算机进行处理。

需要注意的是,不同操作系统对于换行符的表示方式可能会不同。在Windows系统中,换行符通常由两个字符"\\r\\n"组成,即回车符加换行符;而在Unix/Linux系统中,换行符通常只由一个字符"\\n"表示。因此,在处理跨平台的字符串时,需要注意换行符的表示方式可能不同,需要进行相应的处理。

函数名称空格、制表符、换行符等空白符的处理
cin默认情况下,空格、制表符等被视为分隔符,不会被读入到变量中。可以使用 cin.get()cin.getline() 函数读入空白符。
getline默认情况下,读取整行字符,包括换行符,但不包括分隔符。可以指定一个分隔符,用于将输入的一行数据按照指定分隔符进行分割。
scanf默认情况下,空格、制表符等被视为分隔符,不会被读入到变量中。可以使用格式控制字符串指定空格等符号的读入方式。
gets读取整行字符,包括换行符,但不包括分隔符。容易发生缓冲区溢出问题,不建议使用。

需要注意的是,这些输入函数对空白符的处理方式可能会因操作系统或编译器等因素而有所不同,需要根据具体情况进行处理。在使用这些函数时,需要注意输入的数据格式和变量类型的匹配,避免出现数据读取错误的情况。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击