C++语言io流处理基本操作教程示例

编辑: admin 分类: c#语言 发布时间: 2021-12-12 来源:互联网
目录
  • 一、输入输出流对象
    • 流对象常用的处理函数
    • 流控制字符
  • 二、字符流操作
    • sstream
  • 三. 文件流流类
    • 四.文件指针定位

      一、输入输出流对象

      cout:标准输出流

      cerr:标准出凑  和cout(只是用于如果是错误时要输出的)

      cin  :   标准输入

      流对象常用的处理函数

      输出字符 put()

      输入字符:get()

      输出字符串:write()

      输入字符串getline()

      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

          int num = 10;
      	cout << setbase(8) << num << endl;
      	cout << setbase(10) << num << endl;
      	cout << setbase(16) << num << endl;

      setfill(‘一个字符') : 设置填充字符

      setw(n):设置输出的宽度

      int num = 10;
      cout<< setfill('s')<<setw(8) << num;

      setprecision :设值有效位数包括整数

      	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)//改变字符流中的字符串

      ​stringstream s("sdflk");
      	cout << s.str() << endl;
      	s.str("ljsflk");
      	s.str(string("sdljf"));
      	//二种都可以 一个是构建一个string的无名对象传字符串
      	cout << s.str() << endl;
       
      ​

      字符流的一些基本操作

      将数字转换为字符串
      int num =1234;
      cout<<to_string(num)<<endl//以字符串输出num
      stringstream stream;
      stream << num;//将num流入stream这个类中
      stream >> str;//stream流出到str这个字符串中
      cout << str << endl;

      同时使用一个流对象多次转换的时候 必须使用clear清除同时也要二次流入在流出

      不然是空流

      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()判断打开是否成功

      !文件对象  判断打开文件是否成功

      	fstream File;
      	File.open("1.tex", ios::in | ios::out | ios::trunc);
      	if (!File.is_open())
      	{
      		cout << "创建文件失败" << endl;
      	}
      	if (!File)
      	{
      		cout << "创建文件失败" << endl;
      	}

       文件的读写操作

      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 结束位置

      fstream read("1.txt", ios::in);
      	read.seekg(5);//移动5个字节后
      	char ch = read.get();//读取5个位置后的第一个
      	cout << ch << endl;

      空格也算

      文件的一些指向操作

      	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流处理的资料请关注海外IDC网其它相关文章!

      【本文由http://www.nextecloud.cn/hk.html首发,转载请保留出处,谢谢】