三 、C++输入不确定长度的字符串&&元素个数

来源:互联网 发布:dnf一直网络中断 编辑:程序博客网 时间:2024/06/05 02:23
  1. 当题目要求输入不定长的字符串或者数量不确定的元素的时候,我们详细的弄明白各个输入字节流的使用;
  2. 首先针对字符串来说:
 #include<iostream>#include<cstring> using namespace std; int main(){     char a[100];    cin.getline(a, 100);    cout << a << strlen(a)<<endl;     return 0;}
ubuntu@ubuntu:~$ g++ a.cppubuntu@ubuntu:~$ ./a.out i like beijing.i like beijing.15ubuntu@ubuntu:~$ 
#include <iostream>#include<cstring> using namespace std;int main(){    char a[100];    cin.get(a, 100);    cout << a << strlen(a)<<endl;    return 0; }
ubuntu@ubuntu:~$ g++ a.cppubuntu@ubuntu:~$ ./a.out i like beijing.i like beijing.15

两者都读取一行输入,直至换行符。
getline将丢弃换行符,
get()将换行符保留在输入序列里。
对于cin.get()输入多行数据时,中间可以使用get()消除换行符。

#include <iostream>#include<cstring> using namespace std;int main(){    char a[100];   while( cin.getline(a, 100)){    cout << a << strlen(a)<<endl;}    return 0; }
ubuntu@ubuntu:~$ g++ a.cppubuntu@ubuntu:~$ ./a.out i like beijing.i like beijing.15光标在此仍然等待输入
# include <iostream># include <cstring> using namespace std;int main(){    char a[100];   while( cin.get(a, 100)){    cout << a << strlen(a)<<endl;}    return 0; }
ubuntu@ubuntu:~$ g++ a.cppubuntu@ubuntu:~$ ./a.out i like beijing.i like beijing.15ubuntu@ubuntu:~$ 

上面是两个循环输入的差别;

# include <iostream># include <cstring>using namespace std;  int main()  {      string str;      getline(cin, str);      cout << str << endl;     return 0; }
ubuntu@ubuntu:~$ g++ a.cppubuntu@ubuntu:~$ ./a.out i like beijing.i like beijing.ubuntu@ubuntu:~$ 
 #include <iostream>  #include <string>  using namespace std;  int main()  {      string str;      while(getline(cin, str)){      cout << str << endl;}     return 0; }
ubuntu@ubuntu:~$ g++ a.cppubuntu@ubuntu:~$ ./a.out i like beijing.i like beijing.光标在此仍然等待输入

针对不定长数组的输入

#include<iostream>using namespace std;int main(){int a[100];int i;for(i=0;;i++)    {        cin>>a[i];        if(getchar()=='\n') //遇回车结束            break;      }    for(int j=0;j<i+1;j++)    cout<<a[j]<<" ";    return 0;}
#include<iostream>#include<vector>using namespace std;int main(){vector<int> a ;int i;int c;for(i=0;;i++)    {        cin>>c;        a.push_back(c);        if(getchar()=='\n') //遇回车结束            break;    }    for(int j=0;j<i+1;j++)    cout<<a[j]<<" ";    return 0;}
原创粉丝点击