杂篇之3-C++的输入与输出

来源:互联网 发布:淘宝怎么1元秒杀 编辑:程序博客网 时间:2024/06/05 00:25

1.C++/C输入输出常用函数

两个函数:

  • cin ,与c 中的scanf类似
    • 特点:遇tab,space,Enter即结束输入(scanf一样)
  • getline,与 c中的gets(char *s)类似
    • 特点:读入一行文本,遇到换行符结束,但是并不保存换行符;如果输入第一个字符即\n则输入为空字符串

2.输入多行char类型字符,行数不定

例子如下:

abcdfr
acdf
acv

目标: 读入一行字符串,进行处理,而后再读入下一行字符串

代码:

    cout<<"实验1:使用getline函数"<<endl;     while(1)    {        string L;        while(getline(cin,L) && L.size()!=0)          {            stringoperator(L) // 对L进行处理        }         if(L.size()==0)         {            break;        }    }     cout<<"实验2:使用gets()函数"<<endl;    while(1)    {        char str[81];        while(gets(str)&&str[0]!='\0')        {            string L(str);            stringoperator(L) // 对L进行处理        }        if(str[0]=='\0')            break;      } 

3.读入多行数据,行数不定,且每一行输入中包含多个字符串,以空格相间隔

输入实例:

abc acd bcdef abcdefg
abc a
def a cdf

目标:将每一行的输入按照空格提取出其中包含的字符片段,存储进vector<string> vstr中,如上例第一行存储在vstr中,则结果如下:

vstr[0]存储的是abc
vstr[1]存储的是acd
vstr[2]存储的是bcdef
vstr[3]存储的是abcdefg:

基本思路

  • 输入行
  • 按照空格对这一行数据进行切割

代码:

    while(1)    {        vector<string> vstr;        string L;        getline(cin,L);        if(L.size()==0)            break;        string L1;        for(int i=0;i<L.size();++i)        {            if(L[i]!=' ')            {                    L1=L1+L[i];            }               else{                    vstr.push_back(L1);                    L1.clear();             }        }         vstr.push_back(L1);        if(vstr.size()==0)            break;        stringVectorOperator(L) // 对这一行数据进行处理    }

4.输入多行int类型的数据,每一行元素个数未知

输入例子如下:

1 2 3 4 5

2 3 4

3 4 5 6 7

目标:将每一行出现的数字按照次序存储进vector中

基本想法:

  • 先按照字符串的方法读入一行数据
  • 对这一行数据进行切割,分离出其中的数字

代码如下:

    while(1)    {        vector<int> vec;        string L;        getline(cin,L);        if(L.size()==0)            break;         int num=0;        for(int i=0;i<L.size();++i)// 分离出数字        {            if(L[i]!=' ')            {                num=num*10+int(L[i]-'0');            }else{                vec.push_back(num);                num=0;            }        }        vec.push_back(num);        cout<<vec.size()<<" "<<endl;        for(int i=0;i<vec.size();++i)        {            cout<<vec[i]<<endl;         }        cout<<"next"<<endl;    }
原创粉丝点击