C/C++输入输出总结

时间:2023-12-21 22:03:26

*string类:  1.cin>>string时,遇到'\n'或者空格即停止,并且'\n'或空格仍留在输入里,即只读了一个单词或什么都没读,但string类自己处理好了空字符什么的.下一次再这样读的话会跳

换行和空格;

       2.读一行到string里可用getline(cin,string),这个函数一直读直到遇到了'\n',注意这里getline()不是cin的类方法,cin表示到这里找输入.并且这个函数把'\n'读取并丢弃了

没有放在string里.

*char arr[]:  1.cin>>arr会一直读进去,不安全.当遇到'\n'或者空格时停止,并在后面自动加'\0',但'\n'或者空格仍留在输入里.下一次再这样读的话也会跳过换行和空格;

2.用cin.getline(arr,length)读一行,并在结尾加'\0',指定了长度.读取'\n'并且丢弃了.

*char:   1.cin>>char会跳过'\n'或空格,直到遇到不是这样的.

2.cin.get(char)可以读每一个字符,包括换行符和空格.char=cin.get()的效果也一样.

*从文件读取一行到string:   注意要包含string头文件,这点易错.getline(ifstream,string);这里getline只是一个函数.

scanf()遇到enter、空格、非法字符,输入就结束

fgets() :   char *fgets(char *buf, int bufsize, FILE *stream);

从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。