/
...
/
/
十. 标准IO New
Search
Try Notion
十. 标准IO New
Universal
EOF问题
EOF(End of file)问题是一个文件问题
但是很多终端支持用文件重定向输入流,即文件模拟键盘 故写代码时候最好以文件标准为准 故需要用键盘模拟文件的End of file
Windows下为Crtl+Z Unix为Crtl+D
非Win原生的编译器也可识别Crtl+Z,但需要紧接一个回车(GUN C++ VC++ Borland)
C
scanf
...
Copy
C++
string.h(cstring)
strlen(str) ; /*------------*/ strcpy(str1,str2); //str2复制到1 strcat(str1,str2); //str2附加到1 strncpy(str1,str2,str1Szie); //str2复制到1,安全带边界版本 strncat(str1,str2,str1Szie); //str2附加到1,安全带边界版本 /*------------*/ strcmp(str1,str2) //相同返回0 //str1在str2之前返回负数 //str1在str2之后返回正数
Copy
C++
type.h(ctype)
isaplha(ch) //是否是字母(a-z和A-Z) isdigit(ch) //是否数组 ispunch(ch) //是否是标点 isalnum(ch) //是否字母加数字
Copy
C++
C++
cout
cout << Var_Or_Constvar ; //用例1 cout << "ABC" ; << Var ; //用例2 cout << "ABC" ; cout << Var ; //用例3 wchar_t bob = L'P' ; wcout << L"tall" << endl
Copy
C++
会根据<< 后的数据类型智能重载
支持转义符号
仅适用于普通类型,若要处理wchar_t类型,需要wcin\wcout
成员函数
//用例1 cout.put('A') ;
Copy
C++
cout.put(cahr)
cin
cin >> Var ;
Copy
C++
C++将cin/cout 定义为流对象<< 为插入输入流>> 为抽取流
以空白(空格 回车 制表符)作为结束符号
对比scanf
是否保留结束符号于输入流中?
忽略前导空格?
成员函数
//例一 cin.getline(name,20) ; //将输入读入到具有20个大小的name数组中(最大为19个字符) //例二 cin.get(name,20).get() ; cin.get(...)返回的还是cin对象 //例三 //直接原始输入 while(cin.fail()== false) { count++ ; cin,get(ch[count]) ; } //Or while(!cin.fail()) //当cin出现在需要bool值时默认等效替换上述函数 //故有Or while(cin) //由于cin.get返回cin对象 //固有Or while(cin.get(ch)){...}
Copy
C++
cin.getline([char_array],chSize) :仅使用回车作为结尾,读取并替换回车符
读取满后也会结束程序,设置失效位
cin.get([char_array],chSize) :类似getline,但是保留回车符在缓冲区
无参数下,可强制单独读取一个字符(即使是回车)
🤔为何传参可以传变量本体,不是形参么?—-可以将函数声明为引用类型传递
读取空行后,设置失效位并截断之后输入
但是对空格而言(非换行),会跳过前导空白(空格 制表)
检测到eof后failbit和eofbit会置1,可通过成员函数cin.eofcin.fail检测
cin.get()
类似传统getchar 读取空白,且返回读取到的char,读到eof,返回eof
典型用例:while( (ch=cin.get()) != EOF ){}
cin.eof() cin.fail()
ifstream对象
用法基本等同cin 但必须包含fstream类,必须声明对象,和打开关闭对应的文件
成员函数
//常见范例 #include <fstream> using namespace std ; //例一 fstream file1 ; file1.open("example.txt") if(!file1.is_open()) { cout << "some failure info" exit(EXIT_FAILURE) ; }
Copy
C++
fstream.open("C Style Strings")
fstream.is_open() 成功打开则返回true
fstream.close()
fstream.good()fstream.fail() .bad() .eof()都为0时,其为1
💡
KEY:编写逻辑:—-操作—-检验问题—-处理差错