C++ 输入输出流之字符串流

原创 2013年12月02日 17:38:55
  • 字符串流介绍
    • 字符串流以内存中用户定义的字符数组(字符串)作为输入输出对象。
    • 字符串流也有缓冲区,当缓冲区满了(或遇到换行符),流缓冲的数据一起存入字符数组。
  • 头文件<strstream>
  • 1. 建立输出字符串流对象
    • ostrestream的构造函数:
      • ostrestream::ostrstream(char *buffer, int n, int mode = ios::out);
      • buffer指字符串数组首元素的指针
      • n是流缓冲区的大小
      • iost::out是默认值
    • 建立输出字符串流对象与字符数组的关联:
      • ostrstream strout(cStr1, 20)

  • 2. 建立输入字符串流对象
    • istrstream的构造函数:
      • istrstream::istrstream(char *buffer)
      • istrstream::istrstream(char *buffer, int n)
      • buffer是指向字符数组首元素的指针
      • n是缓冲区的大小
    • 建立输入字符串流对象与字符数组的关联
      • istrstream strin(cStr2);    // 将cStr2字符数组中的全部数组作为输入字符串流的内容
      • istrstream strin(cStr2);    // 将cStr2字符数组中的全部数组作为输入字符串流的内容

  • 3. 建立输入输出字符串流对象
    • strstream的构造函数
      • strstream::strstream(char *buffer, int n, int mode)
    • 建立输入输出流对象鱼字符串流流的关联
      • strstream strio(cStr3, sizeof(cStr3), ios::in|ios::out);
      • 以字符数组cStr3为输入输出对象,缓冲区大小与数组cStr3相同
  • 举例:
    #include <strstream>
    #include <iostream>
    using namespace std;
    
    int main()
    {
        char cStr[50] = "12 34 65 -23 -32 33 61 99 321 32";
        int nArray[10];
        cout << "Old cStr: " << cStr << endl;
    
        // 以字符串cStr作为输入流,建立strin与cStr的关联,缓冲区大小为字符串cStr的大小
        istrstream strin(cStr, sizeof(cStr));
        int i, temp;
        for (i = 0; i < 10; i++)
            strin >> nArray[i];
    
        // 输出读入的数组
        cout << "nArray: ";
        for (i = 0; i < 10; i++)
            cout << nArray[i] << " ";
        cout << endl;
    
        for (int i = 0; i < 5; i++)  // 数组旋转
        {
            temp = nArray[i];
            nArray[i] = nArray[9 - i];;
            nArray[9-i] = temp;
        }
    
        ostrstream strout(cStr, sizeof(cStr));
        for (i = 0; i < 10; i++)
            strout << nArray[i] << " ";
        strout << endl;             // 加入'\0'
        
        cout << "New cStr: " << cStr << endl; // 输出最新的cStr
    
        return 0;
    }
扩展阅读:

C++基础::字符串流(stringstream)

1. ss.clear() vs ss.str("") 2. str() 成员方法的返回值类型 3. 字符串流和文件流的交互 4. 字符串流的功能...
  • lanchunhui
  • lanchunhui
  • 2016年02月24日 16:21
  • 2367

c++ 强大的字符串流处理

本文着重介绍 C++ stringstream 处理字符串,前提是大家对于基本的 char [] , char * , string 已经很熟悉了。       由于本人知识有限, 本文只介绍 str...
  • yangguangqizhi
  • yangguangqizhi
  • 2016年12月24日 22:46
  • 1083

c++ 字符串流 sstream(常用于格式转换)

原文:http://blog.163.com/zhuandi_h/blog/static/180270288201291710222975/ 使用stringstream对象简化类型转换 C++标准库...
  • eldn__
  • eldn__
  • 2015年04月04日 18:17
  • 2322

C++中的字符串流

字符串流stream,用来做数据类型转换;和C以及C++11实现对比。
  • KangRoger
  • KangRoger
  • 2017年05月25日 22:23
  • 545

字符流stringstream详解

以下内容转自:http://www.usidcbbs.com/read-htm-tid-1898.html C++引入了ostringstream、istringstream、stringstrea...
  • lanbing510
  • lanbing510
  • 2015年01月05日 15:11
  • 11381

C++输入输出流

以下是课程书上的,我直接摘抄下来的: C++语言同C语言一样,也不具有内部输入输出能力,这样做的目的是为了最大限度地保证语言与平台的无关性。计算机语言的输入输出功能都是与操作系统相关的,如果C++为...
  • tanchunhai
  • tanchunhai
  • 2007年10月05日 14:00
  • 4040

c++ string流 stringstream的简单总结(初级)

头文件(常用于格式转换) 简单用法: string s; stringstream ss; sss;//将int转换为string ss.clear();//使用stri...
  • weierqiuba
  • weierqiuba
  • 2017年03月26日 11:33
  • 291

C++中输入字符串的几种方法

转自http://gwyan.blog.163.com/blog/static/213337092201361734257744/ C++中几个输入函数的用法和区别(cin、cin.get()、c...
  • AHzZ123
  • AHzZ123
  • 2017年04月23日 13:01
  • 8902

c/c++字符、字符串输入输出

1. scanf 1.1 输入字符 char ch; scanf("%c",&ch); 注意字符前面的取地址符 1.2 输入字符串 char str[15]; scanf("%s",s...
  • yunnuoxintian
  • yunnuoxintian
  • 2016年04月09日 16:56
  • 3689

C++字符串的输入输出

【说明】文章主要是记录自己在yud
  • lxdmwz123
  • lxdmwz123
  • 2014年04月17日 23:02
  • 4344
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ 输入输出流之字符串流
举报原因:
原因补充:

(最多只允许输入30个字)