当前位置: 首页 > news >正文

福州服务专业公司网站建设曲靖网站开发

福州服务专业公司网站建设,曲靖网站开发,北京中燕建设公司网站,对网站主要功能界面进行赏析C的sstream标准库介绍 接下来我们继续看一下C风格的串流控制 ,C引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。 istringstream类用于执行C风格的串流的输入操作。 ostringstream类用于执行…

C++的sstream标准库介绍
接下来我们继续看一下C++风格的串流控制 ,C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。

istringstream类用于执行C++风格的串流的输入操作。
ostringstream类用于执行C风格的串流的输出操作。
strstream类同时可以支持C风格的串流的输入输出操作。

istringstream类是从istream(输入流类)和stringstreambase(c++字符串流基类)派生而来,ostringstream是从ostream(输出流类)和stringstreambase(c++字符串流基类)派生而来,stringstream则是从iostream(输入输出流类)和和stringstreambase(c++字符串流基类)派生而来。

他们的继承关系如下图所示:

istringstream是由一个string对象构造而来,istringstream类从一个string对象读取字符。

istringstream的构造函数原形如下:
istringstream::istringstream(string str);

复制代码 代码如下:

#include <iostream > 
#include <sstream > 
using  namespace  std; 
int  main ()  

istringstream istr; 
istr.str(“1 56.7”,); 
//上述两个过程可以简单写成 istringstream istr(“1 56.7”); 
cout  << istr.str()<<endl; 
int  a; 
float  b; 
istr>>a; 
cout <<a<<endl; 
istr>>b; 
cout <<b<<endl; 
system(“pause”); 
}


上例中,构造字符串流的时候,空格会成为字符串参数的内部分界,例子中对a,b对象的输入”赋值”操作证明了这一点,字符串的空格成为了整型数据与浮点型数据的分解点,利用分界获取的方法我们事实上完成了字符串到整型对象与浮点型对象的拆分转换过程。

str()成员函数的使用可以让istringstream对象返回一个string字符串(例如本例中的输出操作(cout<<istr.str();)。

ostringstream同样是由一个string对象构造而来,ostringstream类向一个string插入字符。

ostringstream的构造函数原形如下:
ostringstream::ostringstream(string str);

示例代码如下:

复制代码 代码如下:

#include <iostream > 
#include <sstream > 
#include <string > 
using  namespace  std; 
int  main ()  

ostringstream ostr; 
//ostr.str(“abc”);//如果构造的时候设置了字符串参数,那么增长操作的时候不会从结尾开始增加,而是修改原有数据,超出的部分增长 
ostr.put(‘d’); 
ostr.put(‘e’); 
ostr<<”fg”; 

string  gstr =  ostr.str(); 
cout <<gstr; 
system(“pause”); 
}


在上例代码中,我们通过put()或者左移操作符可以不断向ostr插入单个字符或者是字符串,通过str()函数返回增长过后的完整字符串数据,但值得注意的一点是,当构造的时候对象内已经存在字符串数据的时候,那么增长操作的时候不会从结尾开始增加,而是修改原有数据,超出的部分增长。

对于stringstream了来说,不用我多说,大家也已经知道它是用于C++风格的字符串的输入输出的。

stringstream的构造函数原形如下:
stringstream::stringstream(string str);

示例代码如下:

复制代码 代码如下:

#include <iostream > 
#include <sstream > 
#include <string > 
using  namespace  std; 

int  main ()  

    stringstream ostr(“ccc”); 
    ostr.put(‘d’); 
    ostr.put(‘e’); 
    ostr<<”fg”; 
    string  gstr =  ostr.str(); 
    cout <<gstr<<endl; 

    char  a; 
    ostr>>a; 
    cout <<a 

    system(“pause”); 
}


除此而外,stringstream类的对象我们还常用它进行string与各种内置类型数据之间的转换。

示例代码如下:

复制代码 代码如下:

#include <iostream > 
#include <sstream > 
#include <string > 
using  namespace  std; 

int  main ()  

    stringstream sstr; 
//——–int转string———– 
    int  a=100; 
    string  str; 
    sstr<<a; 
    sstr>>str; 
    cout <<str<<endl; 
//——–string转char[]——– 
    sstr.clear();//如果你想通过使用同一stringstream对象实现多种类型的转换,请注意在每一次转换之后都必须调用clear()成员函数。 
    string  name =  “colinguan”; 
    char  cname[200]; 
    sstr<<name; 
    sstr>>cname; 
    cout <<cname; 
    system(“pause”); 
}


接下来我们来学习一下输入/输出的状态标志 的相关知识,C++中负责的输入/输出的系统包括了关于每一个输入/输出操作的结果的记录信息。这些当前的状态信息被包含在io_state类型的对象中。io_state是一个枚举类型(就像open_mode一样),以下便是它包含的值。

goodbit 无错误
Eofbit 已到达文件尾
failbit 非致命的输入/输出错误,可挽回
badbit 致命的输入/输出错误,无法挽回

有两种方法可以获得输入/输出的状态信息。一种方法是通过调用rdstate()函数,它将返回当前状态的错误标记。例如,假如没有任何错误,则rdstate()会返回goodbit.

下例示例,表示出了rdstate()的用法:

复制代码 代码如下:

#include <iostream > 
using  namespace  std; 

int  main ()  

    int  a; 
    cin >>a; 
    cout <<cin .rdstate()<<endl; 
    if (cin .rdstate() == ios ::goodbit) 
    { 
        cout <<”输入数据的类型正确,无错误!”<<endl; 
    } 
    if (cin .rdstate() == ios_base::failbit) 
    { 
        cout <<”输入数据类型错误,非致命错误,可清除输入缓冲区挽回!”<<endl; 
    } 
    system(“pause”); 
}


另一种方法则是使用下面任何一个函数来检测相应的输入/输出状态:

bool bad();
bool eof();
bool fail();
bool good();

下例示例,表示出了上面各成员函数的用法:

复制代码 代码如下:

#include <iostream > 
using  namespace  std; 

int  main ()  

    int  a; 
    cin >>a; 
    cout <<cin .rdstate()<<endl; 
    if (cin .good()) 
    { 
        cout <<”输入数据的类型正确,无错误!”<<endl; 
    } 
    if (cin .fail()) 
    { 
        cout <<”输入数据类型错误,非致命错误,可清除输入缓冲区挽回!”<<endl; 
    } 
    system(“pause”); 
}


如果错误发生,那么流状态既被标记为错误,你必须清除这些错误状态,以使你的程序能正确适当地继续运行。要清除错误状态,需使用clear()函数。此函数带一个参数,它是你将要设为当前状态的标志值。,只要将ios::goodbit作为实参。

示例代码如下:

复制代码 代码如下:

#include <iostream > 
using  namespace  std; 

int  main ()  

    int  a; 
    cin >>a; 
    cout <<cin .rdstate()<<endl; 
    cin .clear(ios ::goodbit); 
    cout <<cin .rdstate()<<endl; 
    system(“pause”); 
}


通常当我们发现输入有错又需要改正的时候,使用clear()更改标记为正确后,同时也需要使用get()成员函数清除输入缓冲区,以达到重复输入的目的。

示例代码如下:

复制代码 代码如下:

#include <iostream > 
using  namespace  std; 

int  main ()  

    int  a; 
    while (1) 
    { 
        cin >>a; 
        if (!cin )//条件可改写为cin.fail() 
        { 
            cout <<”输入有错!请重新输入”<<endl; 
            cin .clear(); 
            cin .get(); 
        } 
        else  
        { 
            cout <<a; 
            break ; 
        } 
    } 
    system(“pause”); 
}


最后再给出一个对文件流错误标记处理的例子,巩固学习,代码如下:

复制代码 代码如下:

#include <iostream > 
#include <fstream > 
using  namespace  std; 

int  main ()  

    ifstream myfile(“c://1.txt”,ios_base::in,0); 
    if (myfile.fail()) 
    { 
        cout <<”文件读取失败或指定文件不存在!”<<endl; 
    } 
    else  
    { 
        char  ch; 
        while (myfile.get(ch)) 
        { 
            cout <<ch; 
        } 
        if (myfile.eof()) 
        { 
            cout <<”文件内容已经全部读完”<<endl; 
        } 
        while (myfile.get(ch)) 
        { 
            cout <<ch; 
        } 
    } 
    system(“pause”); 
}

http://www.yayakq.cn/news/137938/

相关文章:

  • 网站建设课程设计报告寄生虫网站代做
  • 如何用凡科网建立一个网站如何自学3d建模
  • 上海有哪些做网站的公司河南建设工程信息网一体化平台查询
  • 网站域名注册信息开发公司 工程管理中存在问题
  • 阿里巴巴官网国际站深圳微网站建设公司哪家好
  • 苏州园区建设网站首页企业网站流程
  • php网站搭建佛冈县住房和城乡建设局网站
  • 天津企业网站建设成都高端网站开发
  • 一小时学做网站wordpress插件分享显示图片
  • 涉县移动网站建设价格网站制作的服务怎么样
  • 开通网站申请书页面关键词优化
  • 可以免费做试卷题目的网站网站建设中采用的技术
  • wordpress建站的案例郴州 网站建设
  • 网站服务器提供商站长统计app软件
  • 来年做啥网站致富wix做的网站在国内访问不
  • 正规的网站建设企业网站制作解析网站dns
  • 杭州网站建站平台seo网站程序
  • 建设营销型网站的目的试卷网站在线做
  • 深圳技术支持 骏域网站建设长春建设网站
  • 网站如何屏蔽中国ip实时在线街景地图
  • 第三方公司做网站价格吧台 东莞网站建设
  • 用iis搭建网站网络营销热门岗位
  • wordpress建站邮件注册装修公司要多少钱才能注册
  • 阜宁网站制作具体报价微信制作网站
  • 做一个网站一般费用平面设计培训要多久
  • 长春做网站wordpress外贸建站主题
  • 短剧cps分销平台官网网站优化的主要任务
  • 足球直播网站怎么做的怎么做外贸网站需注意哪些
  • 做一个国外网站已经有域名 如何建设网站
  • 网站优化排名技巧网站不备案不能访问