父类函数 一般使用虚函数
析构函数也写成虚函数
#include <iostream>
using namespace std;
//输出缓冲遇到换行 有输入 满 程序结束 flush会刷新
int main()
{
cout<<"Hello";//缓冲 可以重定向
cerr<<"World";//无缓冲 不可重定向
clog<<"Tarena";//理论上缓冲 不可重定向
}
class ios
/ \
iotream(cin) ostream(cout cerr clog)
/ \ \ / \ \
ifstream(文件流对象) istringstream(字符串流对象) iostram ostrinstream ofstream
/
fstream
#include <iostream>
using namespace std;
//非格式化得输出: i.get i.put i.getline() i.ignore()
//i.putback i.peek
int main()
{
//EOF;//超越文件末尾 文件结束符
int n = cin.get();//返回ascii码 不会跳过空格 类似scanf("%c",&ch)和getchat
char c,d,e;
cin.get(c).get(d).get(e);//istream& get(char& ch)
cout<<n<<','<<c<<','<<d<<','<<e<<endl;
cout<<"===================="<<endl;
cout.put(n).put(c).put(d).put(e);
cin.ignore(200,'\n');//抛去输入缓冲区的字符最多清除200个字符 清除到换行为止
char ch;
cin>>ch;//跳过空白字符 类似scanf(" %c",&ch)
cout<<" ch= "<<ch<<endl;
}
#include <iostream>
using namespace std;
//非格式化得输出: i.get i.put i.getline() i.ignore()
//i.putback i.peek
int main()
{
//io对象要求能转换成bool值 对处于正常状态io对象转成true 反之false
cout<<"cin = "<<cin<<endl;
cout<<"cout = "<<cout<<endl;
int n;
cin>>n;
cout<<"cin = "<<cin<<endl;
cout<<&cin<<endl;
cout<<&cout<<endl;
}
#include <iostream>
#include<string>
using namespace std;
// 非格式化输入
// i对象.getline(char,数组大小) 不能读完一整行io设置错误状态
// getline(i对象,string&)
// 都可以用第三参数指定读到那个字符停止 默认换行
int main()
{
char buf[10];
if(!cin.getline(buf,sizeof(buf))){
cout<<"行超长度"<<endl;
cin.clear();
cin.ignore();
}
cout<<"buf="<<buf<<endl;
string s;
getline(cin,s,'~');//到~为止
cout<<"s="<<s<<endl;
sprintf("%s",s.c_str());
system("pause");
}
#include <iostream>
#include<string>
using namespace std;
//i.putback()
//i.peek() 偷看
//i.
int main()
{
char buf[100];
cin>>ws;//跳过空白字符
char c = cin.get();
/*if(cin.get()>='0'&&cin.get()<='9')
cin.get();*///不能这么写会被调用3次
cin.putback(c);//退回
if(isdigit(c)){
double d;
cin>>d;
cout<<"d="<<d<<endl;
}
else{
string s;
cin>>s;
cout<<s<<endl;
}
//cin.peek();//查看不取走 返回ascii码
if(cin.peek()=='0'&&cin.peek()=='9'){
double w;
cin>>ws>>w;
cout<<w;
}
system("pause");
}
#include <iostream>
#include<string>
#include<sstream>
using namespace std;
class Point{
int x;
int y;
public:
Point(int x,int y):x(x),y(y)
{}
friend ostream& operator<<(ostream& os,const Point& p){
os<<'('<<p.x<<','<<p.y<<')'<<endl;
return os;
}
};
int main()
{
string s="12345 6.78 x hello 234 100";
istringstream is(s);
int a,b,c;
double d;
char e;
char buf[100];
is>>a>>d>>e>>buf>>oct>>b>>hex>>c;
ostringstream os;
Point p(3,5);
os<<"a="<<a<<",b="<<b<<",c="<<c<<",d="
<<d<<",e="<<e<<",buf="<<buf<<"p="<<p<<endl;
//将这些东西合并成了一个字符串?(不太确定)
cout<<"====="<<endl;
cout<<os.str()<<endl;//输出里面的字符串
cout<<os.str()[8];
system("pause");
}
#include <iostream>
#include<string>
#include<sstream>
#include<fstream>
using namespace std;
int main()
{
string path = "lianxi.cpp";
ifstream fin(path.c_str());
ofstream fout("06PM_1.cpp");//原有内容被清空
//等同于fin.open(path.c_str);
if(!fin) {cout<<"打开fin失败"<<endl;return 1;}//return表示失败了
if(!fout) {cout<<"打开fout失败"<<endl;return 1;}
char ch;
//while(ch = fin.get()!=EOF)
while(fin.get(ch)){
cout<<ch; fout<<ch;
}
// while(fin>>ch) cout<<ch;跳过所有的空白和换行
// while(fin){fin.get(ch);fout<<ch;}//会多出一个字符
fin.close();
fout.close();
system("pause");
}
析构函数也写成虚函数
#include <iostream>
using namespace std;
//输出缓冲遇到换行 有输入 满 程序结束 flush会刷新
int main()
{
cout<<"Hello";//缓冲 可以重定向
cerr<<"World";//无缓冲 不可重定向
clog<<"Tarena";//理论上缓冲 不可重定向
}
class ios
/ \
iotream(cin) ostream(cout cerr clog)
/ \ \ / \ \
ifstream(文件流对象) istringstream(字符串流对象) iostram ostrinstream ofstream
/
fstream
#include <iostream>
using namespace std;
//非格式化得输出: i.get i.put i.getline() i.ignore()
//i.putback i.peek
int main()
{
//EOF;//超越文件末尾 文件结束符
int n = cin.get();//返回ascii码 不会跳过空格 类似scanf("%c",&ch)和getchat
char c,d,e;
cin.get(c).get(d).get(e);//istream& get(char& ch)
cout<<n<<','<<c<<','<<d<<','<<e<<endl;
cout<<"===================="<<endl;
cout.put(n).put(c).put(d).put(e);
cin.ignore(200,'\n');//抛去输入缓冲区的字符最多清除200个字符 清除到换行为止
char ch;
cin>>ch;//跳过空白字符 类似scanf(" %c",&ch)
cout<<" ch= "<<ch<<endl;
}
#include <iostream>
using namespace std;
//非格式化得输出: i.get i.put i.getline() i.ignore()
//i.putback i.peek
int main()
{
//io对象要求能转换成bool值 对处于正常状态io对象转成true 反之false
cout<<"cin = "<<cin<<endl;
cout<<"cout = "<<cout<<endl;
int n;
cin>>n;
cout<<"cin = "<<cin<<endl;
cout<<&cin<<endl;
cout<<&cout<<endl;
}
#include <iostream>
#include<string>
using namespace std;
// 非格式化输入
// i对象.getline(char,数组大小) 不能读完一整行io设置错误状态
// getline(i对象,string&)
// 都可以用第三参数指定读到那个字符停止 默认换行
int main()
{
char buf[10];
if(!cin.getline(buf,sizeof(buf))){
cout<<"行超长度"<<endl;
cin.clear();
cin.ignore();
}
cout<<"buf="<<buf<<endl;
string s;
getline(cin,s,'~');//到~为止
cout<<"s="<<s<<endl;
sprintf("%s",s.c_str());
system("pause");
}
#include <iostream>
#include<string>
using namespace std;
//i.putback()
//i.peek() 偷看
//i.
int main()
{
char buf[100];
cin>>ws;//跳过空白字符
char c = cin.get();
/*if(cin.get()>='0'&&cin.get()<='9')
cin.get();*///不能这么写会被调用3次
cin.putback(c);//退回
if(isdigit(c)){
double d;
cin>>d;
cout<<"d="<<d<<endl;
}
else{
string s;
cin>>s;
cout<<s<<endl;
}
//cin.peek();//查看不取走 返回ascii码
if(cin.peek()=='0'&&cin.peek()=='9'){
double w;
cin>>ws>>w;
cout<<w;
}
system("pause");
}
#include <iostream>
#include<string>
#include<sstream>
using namespace std;
class Point{
int x;
int y;
public:
Point(int x,int y):x(x),y(y)
{}
friend ostream& operator<<(ostream& os,const Point& p){
os<<'('<<p.x<<','<<p.y<<')'<<endl;
return os;
}
};
int main()
{
string s="12345 6.78 x hello 234 100";
istringstream is(s);
int a,b,c;
double d;
char e;
char buf[100];
is>>a>>d>>e>>buf>>oct>>b>>hex>>c;
ostringstream os;
Point p(3,5);
os<<"a="<<a<<",b="<<b<<",c="<<c<<",d="
<<d<<",e="<<e<<",buf="<<buf<<"p="<<p<<endl;
//将这些东西合并成了一个字符串?(不太确定)
cout<<"====="<<endl;
cout<<os.str()<<endl;//输出里面的字符串
cout<<os.str()[8];
system("pause");
}
#include <iostream>
#include<string>
#include<sstream>
#include<fstream>
using namespace std;
int main()
{
string path = "lianxi.cpp";
ifstream fin(path.c_str());
ofstream fout("06PM_1.cpp");//原有内容被清空
//等同于fin.open(path.c_str);
if(!fin) {cout<<"打开fin失败"<<endl;return 1;}//return表示失败了
if(!fout) {cout<<"打开fout失败"<<endl;return 1;}
char ch;
//while(ch = fin.get()!=EOF)
while(fin.get(ch)){
cout<<ch; fout<<ch;
}
// while(fin>>ch) cout<<ch;跳过所有的空白和换行
// while(fin){fin.get(ch);fout<<ch;}//会多出一个字符
fin.close();
fout.close();
system("pause");
}