Introduction to Programming with c++ 10-1 stringstream使用

课本学习

主要是熟悉stringsteam常用的几个例子。
P378页

stringstream provides an interface to manipulate strings as if they were input/ouput streams.

代码

  • 第一个例子,主要用来实现字符串和浮点数(整数)的相互转换
#include <iostream>
#include <string>
#include <sstream>
#include <cmath>

std::string double_to_string( double val );
double string_to_double( std::string s );


int main( void )
{
    const double PI = 4*std::atan(1.0);
    std::string s = double_to_string(PI);
    std::cout << s << std::endl;

    double val = string_to_double( s );
    std::cout << val << std::endl;

    return 0;
}

std::string double_to_string( double val )
{
    std::stringstream ss;
    ss << val;
    return ss.str(); // returns a string object with a copy of the current contents of the stream
}
double string_to_double( std::string s )
{
    std::stringstream ss;
    double ret = 0.0;

    ss << s;
    ss >> ret;
    return ret;
}
  • 第二个例子,用来解析以空白符作为分隔符的单词序列。当然对于诸如“,”这种符号,可以先替换成空白符,比如space。在进行下面的操作。
#include <iostream>
#include <vector>
#include <string>
#include <sstream>

std::vector<std::string> extract_words( const std::string& line );

int main( void )
{
    std::string line;
    std::cout << "Please enter a line: ";
    std::getline( std::cin, line );
    std::vector<std::string> words = extract_words( line );

    typedef std::vector<std::string>::const_iterator const_iter;
    const_iter b = words.begin();
    const_iter e = words.end();
    while( b != e )
    {
        std::cout << *b << std::endl;
        ++b;
    }

    return 0;
}

std::vector<std::string> extract_words( const std::string& line )
{
    std::stringstream ss(line);
    std::vector<std::string> ret;

    while( !ss.eof() )
    {
        std::string s;
        ss >> s;
        ret.push_back(s);
    }

    return ret;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值