一、输入输出流对象
cout
:标准输出流
cerr
:标准出凑 和cout(只是用于如果是错误时要输出的)
cin
: 标准输入
流对象常用的处理函数
输出字符 put()
输入字符:get()
输出字符串:write()
输入字符串getline()
1
2
3
4
5
6
7
8
9
10
|
char ch; cin.get(ch); cout << ch<<endl; cout.put(ch); getchar (); //用来消除回车的 cout << endl; //字符串的输入输出 char str[20] = "" ; //要初始化不然会出现输出后最后无/0导致输出烫烫烫... cin.getline(str, 20); //这里更安全只能输入20个 多了只取前面20个 cout.write(str,20); |
流控制字符
//就是以你制定的要求去输出
要加上头文件#incude<iomanip>
boolalpha
: bool类型输出true或者false
setbase(n)
:设置整数为n的进制进行输出 n只能为8 16 10
1
2
3
4
|
int num = 10; cout << setbase(8) << num << endl; cout << setbase(10) << num << endl; cout << setbase(16) << num << endl; |
setfill(‘一个字符') : 设置填充字符
setw(n)
:设置输出的宽度
1
2
|
int num = 10; cout<< setfill( 's' )<<setw(8) << num; |
setprecision
:设值有效位数包括整数
1
2
3
|
double num = 3.14159; cout << setprecision(4) << num << endl; cout << setprecision(4) << num * 10 << endl; |
前面一个是3.141后面一个是31.41
setiosflags(ios::left)//对齐方式左对齐setiosflagsios(ios:right)右对齐
二、字符流操作
头文件 #include<sstream>
字符流一般使用stringstream的对象
sstream
包括 isringstream
ostingstream
stringstream
一般用stringstream(可读可写)
stringstream的成员函数
string.str()//获取字符流对象中的字符串
string.str(const string&str)//改变字符流中的字符串
1
2
3
4
5
6
7
8
|
stringstream s( "sdflk" ); cout << s.str() << endl; s.str( "ljsflk" ); s.str(string( "sdljf" )); //二种都可以 一个是构建一个string的无名对象传字符串 cout << s.str() << endl; |
字符流的一些基本操作
1
2
3
4
5
6
7
|
将数字转换为字符串 int num =1234; cout<<to_string(num)<<endl //以字符串输出num stringstream stream; stream << num; //将num流入stream这个类中 stream >> str; //stream流出到str这个字符串中 cout << str << endl; |
同时使用一个流对象多次转换的时候 必须使用clear清除同时也要二次流入在流出
不然是空流
1
2
3
4
5
6
7
8
9
10
|
stringstream stream; stream << num; //将num流入stream这个类中 stream >> str; //stream流出到str这个字符串中 cout << str << endl; string str2; //如果没有clear函数就没有把num流入到num2 stream.clear(); stream << num; stream >> str2; cout << str2 << endl; |
三. 文件流流类
头文件 #include<fstream>//ifstream 和ofstream
ofstream
:打开文件,写文件
ifstream
:打开文件,读操作
fstream
:可读可写
mode:
ios::in 读的方式打开文件
ios::out 写的方式打开文件
ios::app追加的方式写文件
ios::ate 在已有的文件,文件指针指向文件末尾
ios::trunc文件不存在,创建文件
ios::binary二进制形式打开文件,默认方式是ascii码方式打开
ios::nocreat不创建的方式
ios::noreplace 不替换
组合方式使用
用的是位或
ios::in|ios::out 可读写
ios::out|ios::binary二进制写的方式打开文件
判断文件是不是打开成功(防御性操作)
is_open()
判断打开是否成功
!文件对象 判断打开文件是否成功
1
2
3
4
5
6
7
8
9
10
|
fstream File; File.open( "1.tex" , ios::in | ios::out | ios::trunc); if (!File.is_open()) { cout << "创建文件失败" << endl; } if (!File) { cout << "创建文件失败" << endl; } |
文件的读写操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
fstream Read( "1.txt" ,ios::in); //读的方式打开文件///要有这个文件 fstream Write( "2.txt" ,ios::out|ios::trunc); //写的方式打开文件//没有这个文件就创建一个 while (1) { char ch; Read.get(ch); if (Read.eof()) { break ; } Write.put(ch); } Read.close(); Write.close(); |
四.文件指针定位
ifstream
://读
istream&seekg(longt int pos);
istream&seekg(long int pos,ios_base::seekdir begin)
ofstream
://写
ostream&seekp(long int pos):
ostream&seekp(long int pos,ios_base::seekdir begin);
//ios_base::seekdir//位置
ios::beg 文件开始
ios::cur 文件当前
ios::end 结束位置
1
2
3
4
|
fstream read("1.txt", ios::in); read.seekg(5);//移动5个字节后 char ch = read.get();//读取5个位置后的第一个 cout << ch << endl; |
空格也算
文件的一些指向操作
1
2
3
4
5
6
7
8
9
10
|
fstream read( "1.txt" , ios::in); read.seekg(5); //移动5个字节后 char ch = read.get(); //读取5个位置后的第一个 cout << ch << endl; read.seekg(0, ios::beg); ch = read.get(); cout << ch << endl; read.seekg(-5, ios::end); //最后位置前面5个 ch = read.get(); cout << ch << endl; |
以上就是C++语言io流处理基本操作示例的详细内容,更多关于C++语言io流处理的资料请关注服务器之家其它相关文章!
原文链接:https://blog.csdn.net/weixin_56366633/article/details/121366032