`
huozheleisi
  • 浏览: 1233663 次
文章分类
社区版块
存档分类
最新评论

istringstream, ostringstream, stringstream用法示例

 
阅读更多
  1. #include <iostream>
  2. #include <string>
  3. #include <sstream>
  4. using namespace std;

  5. int main()
  6. {
  7. int a, b;
  8. string Str1, Str2;
  9. string Input = "abc 123 bcd 456 sss 999";
  10. //ostringstream 对象用来进行格式化的输出,可以方便的将各种类型转换为string类型
  11. //ostringstream 只支持 << 操作符
  12. //格式化输出
  13. ostringstream oss;
  14. oss << 3.14;
  15. oss << " ";
  16. oss << 55555555;
  17. oss << endl;
  18. cout << oss.str();
  19. //double型转化为字符串
  20. oss.str("");//每次使用前清空,oss.clear() 并不能清空内存
  21. oss << 3.1234234234;
  22. Str2 = oss.str();
  23. cout << Str2 << endl;

  24. //int型转化为字符串
  25. oss.str("");
  26. oss << 1234567;
  27. Str2 = oss.str();
  28. cout << Str2 << endl;

  29. //istringstream 对象用来把一个已定字符串中的以空格隔开的内容提取出来
  30. //istringstream 只支持 >> 操作符

  31. istringstream iss(Input);//通过构造函数对istringstream类进行赋值,可以将一个字符串变量的值传递给istringstream对象
  32. //若传入的字符串是常量,也可以进行如下赋值
  33. //iss.str("ccc 555 aaa 333");
  34. //扩展,iss对象支持对C语言流的操作,所以也可以进行如下的赋值
  35. //iss.str(Input.c_str());
  36. while(iss >> Str1 >> a)
  37. {
  38. cout << Str1 << " " << a << endl;
  39. }

  40. //stringstream类
  41. //该类就是上述istringstream和ostringstream类的综合,支持<<, >>操作符,可以进行字符串到其它类型的快速转换
  42. stringstream ss;
  43. ss << Input;
  44. while(ss >> Str1 >> a)
  45. {
  46. cout << Str1 << " " << a << endl;
  47. }

  48. //总结这几个类istringstream, ostringstream, stringstream, 包含在<sstream>文件里
  49. //输入方式:
  50. //1.构造函数。iss, oss, ss 都支持。eg. istreamstring iss(Input), ostreamstring(Input), stringstream ss(Input)
  51. //2.<< 操作符。oss, ss 支持。 oss << Input, ss << Input;
  52. //3. .Str()函数,提供C中的字符串头指针,或者匿名内存首地址
  53. // eg. iss.str(Input.c_str()), iss.str("abc 123 345")
  54. // oss.str(Input.c_str()), oss.str("abc 123 345")
  55. // ss.str(Input.c_str()), ss.str("abc 123 345")

  56. //输出方式:
  57. //1. 通过.str()得到一份拷贝
  58. //eg. Str1 = iss.str(), Str1 = oss.str(), Str1 = ss.str();
  59. // 显然,这个也提供C语言的接口
  60. // printf("%s", iss.str().c_str()), printf("%s", oss.str().c_str()), printf("%s", ss.str().c_str())
  61. //2. >>操作符, iss和ss支持该操作
  62. //每次不同的使用时刻必须要清空
  63. //ss.str(""), iss.str(""), oss.str(""),暂时没有发现其它的清空方法
  64. //最大的用处
  65. //输入string类型,可以通过iss 或 ss 类提取出来,功能类似于C语言中的sscanf()函数, 在TC中比较常见
  66. //提供字符串和各种类型之间的转换
  67. return 0;
  68. }
以下是自己写的练习程序
#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;
}
分享到:
评论

相关推荐

    Stringstream的用法 c++

    c++中stringstream的用法 istringstream, ostringstream, stringstream用法示例

    C++中stringstream的用法和实例

    之前在leetcode中进行string和int的转化时使用过istringstream,现在大致总结一下用法和测试用例。 介绍:C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h...

    用标准c++实现string与各种类型之间的转换

    这个类在头文件中定义, 库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。另外,每个类都有一个对应的宽字符集版本。 简单起见,我主要以stringstream为...

    C++的sstream标准库详细介绍

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

    C++风格的几种IO流

    C++风格的三个IO流对象 stringstream、ostringstream、istringstream

    C++中string与int的相互转换实现代码

    做ACM时,经常用到string和int的转换,下面的程序: 核心代码: #include #include&lt;string&gt; ...//istringstream从string读入,和cin一样仅仅重载了&gt;&gt;,可以把string转为int iss.clear();//每次使用前先清空 iss.s

    Algorithm:개인공부

    stringstream(leet 824)串流// 문자열 format 을 parsing 할 때 사용string cmd;istringstream S("123 421 hello kkk 54");while(S&gt;&gt;cmd){ cout&lt;&lt;cmd&gt; 123421hellokkk54串流// 문자열 format 을 조합하여 저장...

    C++标准库中sstream与strstream的区别详细解析

    在C++有两种字符串流,一种在sstream中定义,另一种在strstream中定义。它们实现的东西基本一样。...class stringstream;class …….它们是基于std::string编写的 因此ostrstream::str()返回的是char*类

    利用C++实现从std::string类型到bool型的转换

    利用输入字符串流:std::istringstream 代码如下:bool b;std::string s = “true”;std::istringstream(s) &gt;&gt; std::boolalpha &gt;&gt; b;但当字符串s为“1”时,上面的代码无法正确转换,此时应该用: 代码如下:bool b;...

    如何在c++中实现字符串分割函数split详解

    在学习c++中string相关基本用法的时候,发现了sstream的istringstream[1]可以将字符串类似于控制台的方式进行输入,而实质上这个行为等同于利用空格将一个字符串进行了分割,于是考虑到可以利用这个特性来实现c++...

    c++如何分割字符串示例代码

    话不多说,直接上代码 如果需要根据单一字符分割单词,直接用getline读取就好了,很简单 #include #include #include &lt;string&gt; ... istringstream ss(words); while (!ss.eof()) { string wor

    IP地址是计算机网络中用来唯一标识一个设备的地址-IP地址转换.pdf

    该函数使用字符串流`istringstream`将点分十进制形式的IP地址按照"."进行分割,然后依次解析每个分割得到的字符串,并通过移位和加法运算得到无符号整数形式的IP地址。 `integerToIp`函数将无符号整数形式的IP地址...

    C++ Primer中文版(第5版)李普曼 等著 pdf 1/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...

    C++Primer(第5版 )中文版(美)李普曼等著.part2.rar

     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...

    C++Primer CH11关联容器

    #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

    c++中实现分割字符串的代码

    使用一个简单的函数:istringstream 来实现字符串的分割。

    CC--InterviewProblem:Leetcode,Interview Street等算法问题的解决方案

    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每次读一个单词的形式读出。

    校园导游咨询系统C++.rar

    图的Floyd算法计算景点之间的最短路径,引入Path数组实现路径展示,使用istringstream实现文本文件数据写入,附加景点信息的展示。(内附源代码、课设报告和说明文件)

Global site tag (gtag.js) - Google Analytics