1. cin
cin 是从缓冲区读入,会把空格回车等不可见字符当做分割,跳过。并且最后读入后,后面会剩余未读入的部分,比如空格,回车等。
2. getline
getline 配合 cin. 格式getline(cin,s) ,s 是个字符串类型。缓冲区的第一行,以回车作为分割符,放入字符串s,回车不会放入。如果缓冲区只有一个回车,那个执行后,缓冲区的回车被取走,s为空串。
3. sstream 中的 stringstream
格式 stringstream ssin; ssin << s;
s 是个字符串,通常用getlien(cin, s);
获得。
指向后, ssin 相当于一个缓冲区,保存了字符串里面的所有字符。
然后通过 ssin >> a;
把字符串赋给a,a可以是各种类型,会跳过空格。和cin类似。
注意:
- 普通的读入可以用cin
- 当出现要读入一个数组,当时不知道元素个数的时候,用 stringstream
//输入:
// 1 2
// 3 4 5
// 6 7 8
#include<sstream>//stringstream 的头文件
#include <iostream>
using namespace std;
int num[100];
int num2[100];
int main()
{
int a, b;
cin >> a >> b;//a b 保存 1 2
string s;
getline(cin, s);//读入cin剩下的回车
getline(cin, s);//读入第二行, 不会剩下回车,回车不会给s
stringstream ssin;
ssin << s;//将s 放入 ssin
int cnt = 0;
int x;
while (ssin >> x) num[cnt++] = x;//以空格为分割,一个个拿出给x, 3 4 5 保存到了num
getline(cin, s);//读入第三行, 不会剩下回车,回车不会给s
stringstream ssin1;//一个对象只能用一次,再次使用需要新的
ssin1 << s;
cnt = 0;
while (ssin1 >> x) num2[cnt++] = x;//6 7 8 保存到了 num2
}
谢谢 ssin 看懂啦
感谢感谢,感觉总结的不错
感谢感谢