- #include <iostream>
- #include <string>
- #include <sstream>
- using namespace std;
- int main()
- {
- int a, b;
- string Str1, Str2;
- string Input = "abc 123 bcd 456 sss 999";
-
- //ostringstream 对象用来进行格式化的输出,可以方便的将各种类型转换为string类型
- //ostringstream 只支持 << 操作符
- //格式化输出
- ostringstream oss;
- oss << 3.14;
- oss << " ";
- oss << 55555555;
- oss << endl;
- cout << oss.str();
-
- //double型转化为字符串
- oss.str("");//每次使用前清空,oss.clear() 并不能清空内存
- oss << 3.1234234234;
- Str2 = oss.str();
- cout << Str2 << endl;
- //int型转化为字符串
- oss.str("");
- oss << 1234567;
- Str2 = oss.str();
- cout << Str2 << endl;
-
- //istringstream 对象用来把一个已定字符串中的以空格隔开的内容提取出来
- //istringstream 只支持 >> 操作符
- istringstream iss(Input);//通过构造函数对istringstream类进行赋值,可以将一个字符串变量的值传递给istringstream对象
- //若传入的字符串是常量,也可以进行如下赋值
- //iss.str("ccc 555 aaa 333");
- //扩展,iss对象支持对C语言流的操作,所以也可以进行如下的赋值
- //iss.str(Input.c_str());
- while(iss >> Str1 >> a)
- {
- cout << Str1 << " " << a << endl;
- }
- //stringstream类
- //该类就是上述istringstream和ostringstream类的综合,支持<<, >>操作符,可以进行字符串到其它类型的快速转换
- stringstream ss;
- ss << Input;
- while(ss >> Str1 >> a)
- {
- cout << Str1 << " " << a << endl;
- }
- //总结这几个类istringstream, ostringstream, stringstream, 包含在<sstream>文件里
- //输入方式:
- //1.构造函数。iss, oss, ss 都支持。eg. istreamstring iss(Input), ostreamstring(Input), stringstream ss(Input)
- //2.<< 操作符。oss, ss 支持。 oss << Input, ss << Input;
- //3. .Str()函数,提供C中的字符串头指针,或者匿名内存首地址
- // eg. iss.str(Input.c_str()), iss.str("abc 123 345")
- // oss.str(Input.c_str()), oss.str("abc 123 345")
- // ss.str(Input.c_str()), ss.str("abc 123 345")
- //输出方式:
- //1. 通过.str()得到一份拷贝
- //eg. Str1 = iss.str(), Str1 = oss.str(), Str1 = ss.str();
- // 显然,这个也提供C语言的接口
- // printf("%s", iss.str().c_str()), printf("%s", oss.str().c_str()), printf("%s", ss.str().c_str())
- //2. >>操作符, iss和ss支持该操作
-
- //每次不同的使用时刻必须要清空
- //ss.str(""), iss.str(""), oss.str(""),暂时没有发现其它的清空方法
-
- //最大的用处
- //输入string类型,可以通过iss 或 ss 类提取出来,功能类似于C语言中的sscanf()函数, 在TC中比较常见
- //提供字符串和各种类型之间的转换
- return 0;
- }
以下是自己写的练习程序
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
//istringstream用法
istringstream iss;
string istr1,istr2,istr3;
int a;
//输入字符串
iss.str("I love Ziyu");
iss>>istr1>>istr2>>istr3;
cout<<istr1<<" "<<istr2<<" "<<istr3<<endl;
// 字符串转换为int
iss.clear();
iss.str("1534");
iss>>a;
cout<<a<<endl;
//用C测试转换
printf("%d\n",a);
//ostringstream用法
ostringstream oss;
string ostr1,ostr2,ostr3;
string ostr;
string strFromInt;
string strFromDouble;
//输出字符串
ostr1="My ";
ostr2="Name's ";
ostr3="Steve";
oss<<ostr1;
oss<<ostr2;
oss<<ostr3;
cout<<oss.str()<<endl;
ostr=oss.str();
cout<<ostr<<endl;
//int 转化为string
oss.str("");
oss<<23412;
strFromInt=oss.str();
cout<<strFromInt<<endl;
//double 转化为string
oss.str("");
oss<<1.2345;
strFromDouble=oss.str();
cout<<strFromDouble<<endl;
//将string型赋给char型。关键:c_str函数的返回值是const char*的,不能直接赋值给char*,必须赋给const char*
const char *I=strFromInt.c_str();
const char *D=strFromDouble.c_str();
printf("%s,%s\n",I,D);
return 0;
}
分享到:
相关推荐
c++中stringstream的用法 istringstream, ostringstream, stringstream用法示例
之前在leetcode中进行string和int的转化时使用过istringstream,现在大致总结一下用法和测试用例。 介绍:C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h...
这个类在头文件中定义, 库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。另外,每个类都有一个对应的宽字符集版本。 简单起见,我主要以stringstream为...
C++的sstream标准库介绍 接下来我们继续看一下C++风格的串流控制 ,C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。 istringstream类用于执行C++...
C++风格的三个IO流对象 stringstream、ostringstream、istringstream
做ACM时,经常用到string和int的转换,下面的程序: 核心代码: #include #include<string> ...//istringstream从string读入,和cin一样仅仅重载了>>,可以把string转为int iss.clear();//每次使用前先清空 iss.s
stringstream(leet 824)串流// 문자열 format 을 parsing 할 때 사용string cmd;istringstream S("123 421 hello kkk 54");while(S>>cmd){ cout<<cmd> 123421hellokkk54串流// 문자열 format 을 조합하여 저장...
在C++有两种字符串流,一种在sstream中定义,另一种在strstream中定义。它们实现的东西基本一样。...class stringstream;class …….它们是基于std::string编写的 因此ostrstream::str()返回的是char*类
利用输入字符串流:std::istringstream 代码如下:bool b;std::string s = “true”;std::istringstream(s) >> std::boolalpha >> b;但当字符串s为“1”时,上面的代码无法正确转换,此时应该用: 代码如下:bool b;...
在学习c++中string相关基本用法的时候,发现了sstream的istringstream[1]可以将字符串类似于控制台的方式进行输入,而实质上这个行为等同于利用空格将一个字符串进行了分割,于是考虑到可以利用这个特性来实现c++...
话不多说,直接上代码 如果需要根据单一字符分割单词,直接用getline读取就好了,很简单 #include #include #include <string> ... istringstream ss(words); while (!ss.eof()) { string wor
该函数使用字符串流`istringstream`将点分十进制形式的IP地址按照"."进行分割,然后依次解析每个分割得到的字符串,并通过移位和加法运算得到无符号整数形式的IP地址。 `integerToIp`函数将无符号整数形式的IP地址...
8.3.1 使用istringstream 287 8.3.2 使用ostringstream 289 小结 290 术语表 290 第9章 顺序容器 291 9.1 顺序容器概述 292 9.2 容器库概览 294 9.2.1 迭代器 296 9.2.2 容器类型成员 297 9.2.3...
8.3.1 使用istringstream 287 8.3.2 使用ostringstream 289 小结 290 术语表 290 第9章 顺序容器 291 9.1 顺序容器概述 292 9.2 容器库概览 294 9.2.1 迭代器 296 9.2.2 容器类型成员 297 9.2.3...
#include #include #include #include #include #include using std::cin; using std::cout;...using std::istringstream; using std::ostringstream; map build_rule_map(ifstream& infile) { string lin
使用一个简单的函数:istringstream 来实现字符串的分割。
LeetCode示例std:sort +自定义cmp: 。 std:fill: 。 c ++ 11 std:random + uniform_int_distribution: 。 std:map:upper_bound: 。 std:priority_queue:更大: 。 std:random: 。 std:vector:= std:...
将文件中的每一行存储在vector容器中,然后用istringstream每次读一个单词的形式读出。
图的Floyd算法计算景点之间的最短路径,引入Path数组实现路径展示,使用istringstream实现文本文件数据写入,附加景点信息的展示。(内附源代码、课设报告和说明文件)