您现在的位置是:主页 > news > 在线设计装修的网站/百度推广售后电话

在线设计装修的网站/百度推广售后电话

admin2025/5/27 21:25:17news

简介在线设计装修的网站,百度推广售后电话,最强的管理咨询公司,工商信息公示系统查询1.stringstream中clear()和str("")的区别: 要想很好的理解和运用string流, 这两者的区别必须搞清楚: 区别: clear():清除流的状态标志,(使本不能接受任何数据的流又恢复到能接受数据的状态),但不会清除流中的内容. str(""):清空流中的数据,相当…

在线设计装修的网站,百度推广售后电话,最强的管理咨询公司,工商信息公示系统查询1.stringstream中clear()和str("")的区别: 要想很好的理解和运用string流, 这两者的区别必须搞清楚: 区别: clear():清除流的状态标志,(使本不能接受任何数据的流又恢复到能接受数据的状态),但不会清除流中的内容. str(""):清空流中的数据,相当…

1.stringstream中clear()和str("")的区别:

要想很好的理解和运用string流, 这两者的区别必须搞清楚:

区别:

clear():清除流的状态标志,(使本不能接受任何数据的流又恢复到能接受数据的状态),但不会清除流中的内容.

str(""):清空流中的数据,相当于无论之前流中的数据是什么,使用str("") 之后,流数据为空,并且将状态固定.如果只用str("")流中的数据被清除,但是流不能再接受任何数据,也就是说,不能重复利用.在程序中,如果我们想重复利用流进行类型转换等操作,就必须用clear()函数清除流的eofit位.使其恢复到可接受数据状态.

看这个例子,

#include<iostream>
#include <sstream>
using namespace std;
int main(int argc,char *argv[])
{stringstream inout;int a=123,b=456;string m,n;inout << a;  //插入int数据, 插入后,流的eofbit位固定, 所以流不会再接受数据.inout >> m;    //int 类型转换为字符串;//inout.clear();//inout.str("");inout << b;  //eofbit位固定,不会接受b;inout >> n;//所以n 是空的 cout <<"m:" << m << "n:"<<n<<endl;cout<<inout.str()<<endl;return 0;
}

1.运行程序得到:  

m:123n:
inout.str():123

原因分析:插入int型数据后,流的eofbit位被置位,流不会再接受数据,所以b不会被插入,所以n 是空字符串,inout.str()返回的流inout中的数据,也就只有123了。

2.去掉inout.clear()那行注释运行:

m:123n:456
inout.str():123456

原因分析:插入int型数据后,流的eofbit位被置位,但是input.clear()清除了eofbit位,使流再次处于能接受数据状态,所以b会被插入,所以n 是456串,inout.str()返回的流inout中的数据,只有123456了。

3.再去掉inout.str(" ")运行得到:

m:123n:456
inout.str():456

原因分析:插入int型数据后,流的eofbit位被置位,但是input.clear()清除了eofbit位,使流再次处于能接受数据状态,inout.str("")并清除流中的数据,所以b会被插入,所以n 是456串,inout.str()返回的流inout中的数据,x现在只有456了。

4.注释掉inout.clear()那行运行:

m:123n:
inout.str():

原因分析:插入int型数据后,,流的eofbit位被置位,inout.str("")清除了流中的数据123, 但是并没有改变eofbit位,所以b没有被插入,n为空字符串,此时inout.str()返回流中的数据也为空.

2.string流的作用:


(1).把字符串类型转换为其他类型:

#include<iostream>
#include <sstream>
using namespace std;
int main(int argc,char *argv[])
{istringstream recode("12345.4  34");    //从string对象到数值的转换.float b;int c;recode >> b;     //以空格为界,把istringstreram中的数据取出,第一个转换为float型.recode >> c;      //以空格为界,取出istringstream中的第二个数据 转换为int型.cout << b<<endl;cout << c << endl;return 0;
}

(2)把一行字符串放入流中, 单词以空格分开, 之后把一个个单词依次从流中读出来.

#include<iostream>
#include <sstream>
using namespace std;
int main(int argc,char *argv[])
{istringstream in;string line,str1;while(getline(cin,line)){  //从终端接受一行字符串,存入line中in.str(line);      //把line中的字符串存入字符串流中while(in >> str1){   //每次读取一个单词(以空格为例)存入str1中;cout << str1<<endl;}}return 0;
}

(3)把基本类型转换为string类型;

#include<iostream>
#include <sstream>
using namespace std;
int main(int argc,char *argv[])
{int n=9,m=4; string p,q,s;stringstream stream;stream << n;    //整数转换为string。stream >> p;stream.clear();stream << m;stream >> q;stream.clear();char str[]="yang";  //把char类型转换为string类型.stream  << str;stream >> s; cout << "p:"<<p<<" " <<"q:"<< q<<" "<<"s:"<<s<<endl;return 0;
}