c++输入输出控制

按行输入

尽量使用全局函数string类中的getline(),其读入的第二个参数为string类型,不设置默认是遇到回车停止读入操作

1
2
stream&  (istream& is, string& str, char delim);	
istream& (istream& is, string& str);

cin.getline是针对数组字符串的,以指定的地址为存放第一个读取的字符的位置,依次向后存放读取的字符,直到读满N-1个,或者遇到指定的结束符为止

1
2
istream&  (char* s, streamsize n );
istream& (char* s, streamsize n, char delim );

注意:全局函数的getline(cin,str);处理后还留有结束符在输入流中,故需要使用cin.get();接受最后一个结束符,才能接受后面得输入值。

## 输入带空格的字符串:
string方式

1
2
string s;
getline(cin, s);

字符数组方式

1
2
char s[256];
cin.getline(s, 256);

## 循环输入
(不定长次数,一般以EOF作为输入结束的标志)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
while(scanf("%d%d%d",&x,&y,&v)!=EOF)
{

}

while(cin >> a >> b >> c)
{

}

string s;
while(getline(cin, s))\读取一行
{
if(!s.empty())

}

Tips:

在windows平台,一般模拟eof的输入是在一个新行的开头输入ctrl + z
在unix环境下,是在一个新行的开始出输入ctrl + D