C++ 输入输出函数学习总结

来源:互联网 发布:算法基础打开算法之门 编辑:程序博客网 时间:2024/06/06 00:45

写在未了解string class之前:

cin:

接收一个输入的一个字符或者字符串,遇“空白字符”停止(例如:空格, 回车,TAB, 回车)

cin.get(name, size):

接收一个输入的一个字符或者字符串,遇“回车符”停止,但是接收除“回车符”之外的空白字符(例如:空格, 回车,TAB)。需要注意的是它会将“回车符”留在缓存队列中,不能连续两个cin.get(name, size),否则第二个cin.get(name, size)将会直接读入第一个cin.get(name, size)留下的回车符而导致无效。最好的方式是cin.get(name, size)之后紧跟一个cin.get(),将回车符读取,不影响后面的cin.get(name, size)。

1. 连续两个cin.get(name, size),有问题

    cin.get(name, ArSize);
    cin.get(dessert, Arsize); // a problem

2. 改为下面的程序则没有问题:

    cin.get(name, ArSize); // read first line
    cin.get(); // read newline
    cin.get(dessert, Arsize); // read second line


cin.getline(name, size):

作用同cin.get(name, size),但是cin.getline(name, size)会将“回车符”摒弃,自动换成\0'。


写在了解C++ string class之后:

1. getline(cin, str)与cin.getline(name,size)相比发现,有了class概念之后cin成了一个参数,并且没有长度规格。

    char a[20];    ----array;

    string b;        ----class,定义一个名字为“b”的字符串;

    strlen(charr)  -----charr的长度;

    b.size()     -----字符串b的长度;

    下面引用C++ primer plus 的例子(此程序是有bug的,当输入字符超过charr 20位长度之后,第二个getline将会无输入、无输出);

#include <iostream>#include <string> // make string class available#include <cstring> // C-style string libraryint main(){using namespace std;char charr[20];string str;cout << “Length of string in charr before input: “ << strlen(charr) << endl;cout << “Length of string in str before input: “ << str.size() << endl;cout << “Enter a line of text:\n”;cin.getline(charr, 20); // indicate maximum lengthcout << “You entered: “ << charr << endl;cout << “Enter another line of text:\n”;getline(cin, str); // cin now an argument; no length specifiercout << “You entered: “ << str << endl;cout << “Length of string in charr after input: “ << strlen(charr) << endl;cout << “Length of string in str after input: “ << str.size() << endl;return 0;}
  运行结果一:输入少于20个字符,程序运行如下:
  Length of string in charr before input: 5
  Length of string in str before input: 0
  Enter a line of text:
  ljlkjl
  You entered: ljlkjl
  Enter another line of text:
  lkjlkj
  You entered: lkjlkj
  Length of string in charr after input: 6
  Length of string in str after input: 6
  运行结果二:输入超过20个字符,程序运行如下;
  Length of string in charr before input: 5
  Length of string in str before input: 0
  Enter a line of text:
  kjlakjdkfjlajdklafjlsdkflajdfkjaskflasjdfljalkdjkajsdfkjakd
  You entered: kjlakjdkfjlajdklafj
  Enter another line of text:         -----not able to input any char
  You entered:                               -----
  Length of string in charr after input: 19
  Length of string in str after input: 0


0 0
原创粉丝点击