zoukankan      html  css  js  c++  java
  • c++ 文件读写总结(stream 例子使用)

    ostringstream : 用于执行C风格字符串的输出操作。

    istringstream : 用于执行C风格字符串的输入操作。

    stringstream : 同时支持C风格字符串的输入输出操作。

    通常,ostringstream 类用来格式化字符串,避免申请大量的缓冲区,替代sprintf。该类能够根据内容自动分配内存,其对内存管理也是相当到位。

    #include <string>
    #include <sstream>//
    #include <iostream>
    using namespace std;
    //ostringstream 用于执行C风格字符串的输出操作
    void ostringstream_test()
    {
        //ostringstream 只支持 << 操作符
        std::ostringstream oss;
        oss << "this is test" << 123456;
    
        //    cout << oss.str() << endl;        
    
        oss.str("");//清空之前的内容
        oss.clear();//并不能清空内存
    
                    //浮点数转换限制
        double a, b;
        cout << "请输入两个数:";
        cin >> a >> b;
        //    double tmp = 123.1234567890123;
    
        oss.precision(12);
        oss.setf(std::ios::fixed);//将浮点数的位数限定为小数点之后的位数
                                  //    oss << tmp;
        oss << a*b << endl;
    
        std::cout << oss.str() << "
    " << std::endl;
    }
    
    //istringstream 用于执行C风格字符串的输入操作
    void istringstream_test()
    {
        //istringstream 只支持 >> 操作符
        std::string str = "welcome to china 123";
        std::istringstream iss(str);
    
        //把字符串中以空格隔开的内容提取出来
        std::string out;
        while (iss >> out)
        {
            std::cout << out << std::endl;
        }
        std::cout << "
    " << std::endl;
    }
    
    //stringstream 同时支持C风格字符串的输入输出操作
    
    void stringstream_test()
    {
        //输入
        std::stringstream ss;
        ss << "hello this is kandy " << 123;
        std::cout << ss.str() << "
    " << std::endl;
    
        //输出
        std::string out;
        while (ss >> out)
        {
            std::cout << out.c_str() << std::endl;
        }
        std::cout << "
    " << std::endl;
    }
    
    int main()
    {
        ostringstream_test();
    
        istringstream_test();
    
        stringstream_test();
    
        system("pause");
    
        return 0;
    }

    文件头
    #include <iostream>#include <fstream>#include <string>#include <vector>#include <sstream>
    using namespace std;


    从文件中逐词读取

    void getFromFile() 
    { 
        ifstream fin("C:\data.txt"); 
        string s; 
        while (fin >> s)
        {
            cout << "Read from file:" <<  s << endl;
        }    
    }

    从文件中逐行读取

    void getFromFileByLine() 
    { 
        ifstream fin("C:\data.txt"); 
        string s; 
        while (getline(fin, s))
        {
            cout << "Read from file:" << s << endl;
        } 
    }

    从文件中逐词读取并写入vector容器中

    void fileToVectorByWord() 
    { 
        ifstream infile;
        infile.open("C:\data.txt");
        if (!infile) 
        {    //加入异常判断
     
            cout << "error : cannot open the file" << endl;
        } 
        vector<string> v;
        string s;
        while (!infile.eof())
        {
            infile >> s;
            v.push_back(s); 
        } 
        vector<string>::const_iterator it = v.begin();  //开始验证
        while (it != v.end()) 
        {
            cout << *it << endl;
            ++it;
        } 
    }

    从文件中逐行读取并写入vector容器中

    void fileToVectorByLine() 
    { 
        ifstream infile;
        infile.open("C:\data.txt");
        if (!infile) {
     
            cout << "error : cannot open the file" << endl;
        } 
        vector<string> v;
        string s;
        while (! infile.eof()) 
        {
            getline(infile, s);
            v.push_back(s); 
        } 
        vector<string>::const_iterator it = v.begin();
        while (it != v.end()) 
        {
            cout << *it << endl;
            ++it;
        } 
    }

    istringstream的使用

    void testStringstream()
    {
        string line;
        string word;
        while (getline(cin, line)) 
        {   //从控制台获取一行字符        
            istringstream stream(line);  //将line绑定成istringstream 
            while (stream >> word)
            {  //逐词输出
                cout << word << endl;  
            }    
        } 
    }    
  • 相关阅读:
    CAS实战の自定义注销
    CAS实战の自定义登录
    MongoDB学习总结
    Django登录使用的技术和组件
    Docker搭建Hadoop环境
    配置Nginx的坑及思路
    Centos7 升级 sqlite3
    Python基础题
    pandas的数据筛选之isin和str.contains函数
    CentOS7 下Docker最新入门教程 超级详细 (安装以及简单的使用)
  • 原文地址:https://www.cnblogs.com/marblemm/p/12849184.html
Copyright © 2011-2022 走看看