cin、cout是对象,以cout为例说明。
cout是ostream类的对象。声明在iostream文件中,
#ifdef _M_CEE_PURE
__PURE_APPDOMAIN_GLOBAL extern istream cin, *_Ptr_cin;
__PURE_APPDOMAIN_GLOBAL extern ostream cout, *_Ptr_cout;
__PURE_APPDOMAIN_GLOBAL extern ostream cerr, *_Ptr_cerr;
__PURE_APPDOMAIN_GLOBAL extern ostream clog, *_Ptr_clog;
定义我猜应该在某个.lib .dll中。
cout<<"hi";之所以与printf("hi");差不多,是因为ostream类重载了operator<<函数。
ostream &myCout=cout;myCout<<"hi";也能正常运行。
cin
在单词区配时,常以0~9,a~z,A~Z以外的单词作为单词间分隔,可用
int isalnum(char n); //不为以上三种情况时返回0
还有
isdigit();isalpha();
当需要读入一行字符串,字符串中可能含有空格' '时,可用:
string a; getline(cin,a);
一般的ACM题都有多组测试数据,若事先不告诉几组,可:
while (cin>>a){ ... }
若一组数据包含两行字符串,可以:
while(getline(cin,str_1) && getline(cin,str_2){ ... }
有些题涉及到累加,注意用
unsigned long long
按行读整数
cin>>遇到回车或空格停止本次读入,流中的空格或回车被抛弃。
cin.get(),一次读一个字符,空格或回车可在流中。scanf("%c",&ch)的形式同cin.get();.
char str[100]; scanf("%s",str); 这种形式也是读不进空格和回车的。有些输入有数字、空格、回车和字符。读入str后对str[0]进行判断,很妙哦。
文本文件为 “空格 空格 空格 回车 空格 空格 回车 空格 回车”,程序结果见下:
cout
undone