stringstream clear与str("")的问题

原创 2015年11月17日 16:01:49

因为oj平台需要制作.in .out这样的测试数据,如果偶尔制作到没啥,可题量一大就会出问题,所以我想通过fstream 自动生成这些文件,并使文件名持续增大。像1.in 2.in 3.in……
这就涉及到了int类型与string 类型相互转换的问题,通过并不友善的度娘的搜索,我学到了一个方法。
通过stringstream类来进行int 和string 的转换。
stringstream的头文件是sstream
使用stringstream对象简化类型转换

stringstream

我发现重复写入时会出现前面的东西还留在stream中。
这时,我首先想到的是clear()函数,这个函数是用来清空流的。
但通过string = stream.str()进行值传递操作时,旧的数据依然存在,
而通过stream>>string时,旧的数据就不会存在。
代码如下:

string test;
    string test2;
    stringstream ss;

    for(int j=0;j<10;j++)
    {
        ss.clear();
        //ss.str("");
        ss<<j;
        test = ss.str();
        ss>>test2;
        cout <<test<<" "<<ss.str()<<" "<<test2<<endl;
    }

这引发了我的好奇,于是继续百度。
发现了这样一篇博客

stringstream常用来安全的格式化若干个字符串,数值到一个缓冲区, 而不用担心溢出, 可以用来取代snprintf. 但是很多人都在使用stringstream的时候遇到因为stringstream内部的缓冲区没有正确的清空导致的问题.
那么把stringstream类内部的缓冲区正确的清空方式是什么呢? stringstream ss; 答案是: ss.str(“”)
方法. 另外,如果需要把格式化后的字符串通过>>输出到字符串, 必须每次都调用clear()方法! 所以, 保险期间, 每次缓冲区格式化后,
都通过clear(), str(“”) 两个函数都调用, 把stingstream类复位.


仅使用clear语句的情况
仅使用clear的情况
仅使用str(“”)的情况
仅使用str("")的情况
同时使用clear与str(“”)的情况
这里写图片描述

版权声明:本文为博主原创文章,转载时,请附上本文链接。 如有其他问题需要交流,可以发送邮件到 mcoder2014@sina.com

C++基础---string类的clear/erase/pop_back

1. string中clear/erase/pop_back1.1 std::string::clear 原型:void clear() noexcept; 说明:将字符串的内容清空,让源字符串成为一...
  • cainv89
  • cainv89
  • 2015年09月03日 18:29
  • 5357

string.clear()

     今天看了一段的代码。发现好多的东西平时都没有用过。我们来看看这个吧,是string中的一些函数。它存在C++ library内.被包含进来,在其中的Classes内的Member Funct...
  • liuchunyuan419010677
  • liuchunyuan419010677
  • 2010年01月23日 13:55
  • 9261

c++ stringstream 的clear()清空误区

在用c++写程序时,经常回需要将int or double 等类型转换成string。对于这个操作,我常使用的是stringstream。比如int a = 10; stringstream s1...
  • chenlei0630
  • chenlei0630
  • 2014年09月28日 17:20
  • 3482

stringstream 的.str()正确用法和清空操作

转载自:http://dewei.iteye.com/blog/1940786 streamstring在调用str()时,会返回临时的string对象。而因为是临时的对象,所以它在整个表达...
  • yang3wei
  • yang3wei
  • 2014年05月13日 10:48
  • 13253

C++ stringstream介绍,使用方法与例子

From: http://www.usidcbbs.com/read-htm-tid-1898.html C++引入了ostringstream、istringstream、stringstrea...
  • JoeBlackzqq
  • JoeBlackzqq
  • 2011年12月01日 22:57
  • 95879

注意stringstream.str()临时变量的lifecycle

参考:http://stackoverflow.com/questions/1374468/c-stringstream-string-and-char-conversion-confusion ...
  • yasi_xi
  • yasi_xi
  • 2014年01月17日 10:42
  • 2082

stringstream 的.str()正确用法和清空操作

stringstream 的.str()正确用法和清空操作 博客分类:  C++学习备忘 streamstring在调用str()时,会返回临时的string对象。而...
  • jiafu1115
  • jiafu1115
  • 2014年01月10日 09:43
  • 8735

snprintf、stringstream、strstream的对比分析

这两天在看《C++编程思想》IO部分,里面有讲到strstream的使用,但在g++里却编译不通。上网一查才发现strstream已经被stringstream替代了,后者在类型转换中有巧妙的应用。但...
  • beyondlpf
  • beyondlpf
  • 2012年06月20日 18:35
  • 6436

C++中利用stringstream或者c_str()进行int型与string型char*类型转换

我只挑最简单易懂的,管他效率不效率的。 int转string int n = 0; std::stringstream ss; std::string str; ss ss>>str; ...
  • u013174689
  • u013174689
  • 2014年07月21日 20:54
  • 2014

stringstream真的很好用, 但要注意坑(clear函数之坑, 之前说过)

string可以拼接, 但遇到串和整数拼接, 就比较蛋疼, 还是stringstream好, 但stringstream有clear之后, 我们已经说过了, 所以要注意。        最近用stri...
  • stpeace
  • stpeace
  • 2017年04月08日 23:13
  • 2255
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:stringstream clear与str("")的问题
举报原因:
原因补充:

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