zoukankan      html  css  js  c++  java
  • C++ 08 标准IO库

    特点

    1. IO对象不可复制或赋值
    2. ifstream 由 istream 派生,提供读文件功能。
    3. ofstream 由 ostream 派生,提供写文件功能。
    4. fstream 由 iostream 派生,读写同一个文件。

    流状态查询控制

    #include <iostream>
    #include <string>
    
    using std::string;
    using std::cin;
    using std::cout;
    using std::endl;
    
    
    int main()
    {
    	int ival;
    	while (cin >> ival, !cin.eof())  // 输入输出绑定 cout关联缓冲区被刷新
    	{
    		if (cin.bad()) throw std::runtime_error("IO stream corrupted"); // 流状态检查
    		if (cin.fail()) {
    			std::cerr << "bad data , try again";
    			cin.clear(std::istream::failbit);// 重置输入流
    			std::istream::iostate old_state = cin.rdstate(); // 流当前整个条件状态
    			cin.clear(old_state);
    			continue;
    		}
    		cout << "ok," << ival << endl;
    		cout << "hi" << std::flush; // 刷新 无添加
    	    cout << "hi" << std::ends;  // 刷新 添加null
        	cout << "hi" << std::endl;  // 刷新 添加换行
    	}
    	return 0;
    }
    
    

    文件流对象使用

    #include <iostream>
    #include <fstream>
    #include <string>
    using std::ifstream; using std::ofstream; using std::fstream;
    using std::string;using std::cin;using std::cout;using std::endl;
    
    int main()
    {
    	string file1 = "/share/PostLoanData/file.txt";
    	string file2 = "/share/PostLoanData/file2.txt";
    	ifstream infile(file1.c_str()); // 打开特点文件
    	ofstream outfile(file2.c_str());
    
    	ifstream infile2;
    	ofstream outfile2;
    	infile2.open(file1);  // 打开流 再捆绑文件
    	outfile2.open(file2);
    	// 判断文件是否打开成功
    	if (!infile) { 
    		std::cerr << "error: unable to open input file:" << file1 << endl;
    		return -1;
    	}
    	infile.close(); 
    	infile.open(file2);// 文件流重新捆绑
    
    	infile2.close(); // 清空流
    	return 0;
    }
    
    

    文件模式

    模式 释义
    in 打开文件读,ifstream流对象默认模式
    out 打开文件写,文件会被清空
    app 文件尾追加
    ate 打开文件后定位文件尾
    trunc 打开文件时清空文件流
    binary 二进制模式IO操作
    out + app 打开文件写操作,文件尾写入
    in + out 打开文件做读写操作,定位文件开头
    out + app + trunc 打开文件做读写操作,删除已有数据
    #include <iostream>
    #include <fstream>
    #include <string>
    using std::ifstream; using std::ofstream; using std::fstream;
    using std::string;using std::cin;using std::cout;using std::endl;
    
    int main()
    {
    	string file1 = "/share/PostLoanData/file.txt";
    	string file2 = "/share/PostLoanData/file2.txt";
    	ofstream outfile(file1 , ofstream::app); // 以追加模式打开
    	outfile << "app add in end" << endl;
    	outfile.close();
    	ifstream infile(file1);
    	string line;
    	while (infile >> line) {
    		cout << line ;
    	}
    	infile.close();
    	return 0;
    }
    
    

    字符串流

    #include <iostream>
    #include <sstream>
    #include <string>
    using std::istringstream; using std::ostringstream;
    using std::string; using std::cin; using std::cout; using std::endl;
    
    int main()
    {
    	ostringstream os;
    	os << "val1: " << 1024 << "
    "
    		<< "val2: " << 42 << "
    ";
    	istringstream is(os.str());
    	string dump;
    	int val1, val2;
    	is >> dump >> val1 >> dump >> val2;
    	cout << val1 << "," << val2 << endl;
    	return 0;
    }
    
    
  • 相关阅读:
    .Net中获取打印机的相关信息
    如何在windows server 2008上配置NLB群集
    jvm分析内存泄露
    JVM调优
    线程池工作队列饱和策略
    线程池的处理流程:
    Java的Executor框架和线程池实现原理(转)
    线程池实现原理详解:
    futer.get()(如果任务没执行完将等待)
    sql注入
  • 原文地址:https://www.cnblogs.com/hiqianqian/p/6961277.html
Copyright © 2011-2022 走看看