iostream_test.cpp
#include <iostream>
using namespace std;
#include <stdlib.h>
#include <iomanip>
void cin_test(){
/*
if(-12) //0 为 false 非0[正数+负数] 为 true
cout<<"ok"<<endl;
else
cout<<"error"<<endl;
*/
int i;
//c语言中不能做错误判断
if(cin>>i)
cout<<i<<endl;
else{
cout<<"error"<<endl;
cin.clear();
cin.ignore(); //清空缓冲区
}
}
void string_test(){
string s1="itao"; //运算符重载
string s2("love"); //构造函数
cout<<s2.c_str()<<'\t'<<s1.c_str()<<endl;
}
iostream继承层次
/*C++语言: 输出格式化*/
void cout_test(){
int i=15;
cout<<dec<<i<<endl; //十进制 15
cout<<hex<<i<<endl; //十六进制 f
cout<<oct<<i<<endl; //八进制 17
/*需要引入 iomanip*/
cout<<setbase(16)<<i<<endl; //setbase(n) n为进制[16 10 8]
cout<<setw(10)<<setfill('a')<<setbase(16)<<i<<"++++"<<endl; //aaaaaaaaaf++++
cout<<setw(10)<<setfill('a')<<setbase(16)<<setiosflags(ios::left)<<i<<"++++"<<endl; //faaaaaaaaa++++
//setw(int n) :填充宽度
//setfiell(char c): 填充字符 和 填充宽度 配合使用
//setiosflags(ios::left) //向左对齐 默认向右对齐
float f = 0.0141534;
cout<<setprecision(3)<<f<<endl;//setprecision(int n)填充精度 0.0142
cout<<setiosflags(ios::fixed)<<f<<endl; //0.014
/*
setiosflags(ios::fixed)
以固定的小数位输出
ios 是枚举
*/
cout<<setiosflags(ios::scientific)<<f<<endl; //0.0142
/*
setiosflags(ios::scientific)
scientific:以科学计数法显示
*/
cout<<resetiosflags(ios_base::_Fmtflags::fixed)<<i<<endl;
/*
*/
}
输入输出流格式控制—流实现
输入输出流格式控制—流对象成员控制输出
输入输出流格式控制-综合案例
/*C语言: 输出 格式化*/
void printf_test(){
float f = 0.0141534;
printf("%+10.3f", f);
printf("%s\n", "itao");
printf("%-10.3f", f);
printf("%s\n", "itao");
/*
打印结果:
+0.0142itao
0.0142 itao
Press any key to continue
结论:
%10.3f
10为填充 10 个空字符
.3表示 填充精度
+:表示右对齐 【默认】
-:表示左对齐
//printf("%010.3f", f);
//10前面的0 表示 f 前面补 10 个 0
*/
}
int int_to_string(){
int i=12;
char j[3];
j[0]=i/10+48;
j[1]=i%10+48;
j[2]=0;
printf("%s\n", j);
printf("%c\n", 49);
printf("%c\n", 50);
//cout<<"Hello Wold"<<endl;
return 0;
}
string_test.cpp
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
void main(){
//关于string
//1、 string直接相加与 operator= 赋值操作符
string a="qin ";
string b="tang ";
string c=a+b+"tao";
//2、采用cout直接输出
cout<<c<<endl;
//3、字符串比较
cout<<(a>b)<<endl;
//4、size和length 得到字符串的大小
cout<<c.length()<<endl;
cout<<c.size()<<endl;
//5、operator[] 取第几个运算 相当于数组
cout<<c[0]<<endl;
//6、insert 插入字符
c.insert(0, "love ");
cout<<c<<endl;
//7、 append 增加字符
c.append(" mm");
cout<<c<<endl;
c+="ww"; //运算符重载
cout<<c<<endl;
//8、 replace 替换字符
c.replace(1, 2, "hh"); //1 为起始位置 2 为偏移量
cout<<c<<endl;
//9、截取hh 与 find
string d=c.substr(c.find('h'), 3);
/*
c.find('h') 找到字符h在string中的第一个位置
3 截取的长度
*/
cout<<d<<endl;
//10、operator>> 从输入流中读入字符串
string e;
cin>>e; //注意:输入的字符串有空格 从第一个空格后面的舍弃
cout<<e<<endl;
//11、从文件流中读取
ifstream ifs;
ifs.open("D:\\Junit\\test1.txt");
if(!ifs){
cerr<<"error open............";
}
ifs>>e; //只会读取 文件的 第一行 并且 数据后面有空格 的后面部分舍弃
cout<<e<<endl;
}
file_test.cpp
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
/*判断文件打开 是否成功*/
void isOpenFile(){
ifstream ifs; //输入文件流
ifs.open("D:\\Junit\\test4.txt");
if(!ifs){ //判断文件打开 是否成功
cerr<<"error open.........."<<endl; //cerr 输出错误信息
}else{
cout<<"ok open.........."<<endl;
}
}
void read_line_text(){
ifstream ifs; //输入文件流
ifs.open("D:\\Junit\\test1.txt");
/*
char i[20];
while(1){
//ifs>>i; //读文件
if(!ifs.getline(i, 20)) //读取 行
break;
cout<<i<<endl;
}
*/
string i;
while(1){
//ifs>>i; //读文件
if(!getline(ifs, i)) //读取 行
break;
cout<<i<<endl;
}
cout<<endl;
ifs.close();
}
void read_char_text(){
ifstream ifs; //输入文件流
ifs.open("D:\\Junit\\test1.txt");
char i;
int j;
while(1){
//ifs>>i; //读文件
ifs.get(i);
j=ifs.eof();
if(ifs.eof()) //判断是否读到文件末尾
break;
cout<<i;
}
cout<<endl;
ifs.close();
}
void write_char_text(){
ofstream ofs; //输出文件流
ofs.open("D:\\Junit\\test1.txt");
char i;
while(1){
cin>>i; //从屏幕读
if(i=='#')
break;
ofs<<i; //写文件
}
ofs.close();
}
C语言读写文本文件与C++对照
C语言读写二进制件与C++对照