C++ 字符串读入问题

来源:互联网 发布:直播狗网络电视apk 编辑:程序博客网 时间:2024/06/11 15:40
一.对于字符数组:
方法一:getline()
读入整行数据,它使用回车键输入的换行符来确定输入结尾。
调用方法: cin.getline(str, len);

第一个参数str是用来存储输入行的数组名称,第二个参数len是要读取的字符数。

int main(){    char str[30];    cin.getline(str, 30);    cout << str << endl;    return 0;}

二.对于string类
方法一:getline(cin, str)

这说明这里的getline不是类方法。


#include <string>using namespace std; int main(){    string str;    getline(cin, str);    cout << str << endl;    return 0;}

包含其他输入后读入多行字符串

  例如一些编程题要求先输入字符串行数,然后再一行一行读入字符串。如果正常顺写编程的话,会发现第一行字符串读入的是空,后续才能正常录入每行字符串。 
  这是因为第一行输入一个int数据后,换行符并没有被忽略,直接被准备读入第一行字符串的getline俘获。 
  所以需要在第一行输入一个int数据后,调用cin.ignore()忽略下面的一个流录入,将其抛弃。

   int N;    cin>>N;    cin.ignore();  //取消换行键的读入    string strCinLine[100];    for(int i =0;i<N;i++)        getline(cin,strCinLine[i]);