标题:一个string对象和数值件相互转换的代码
只看楼主
a99875984
Rank: 2
等 级:论坛游民
帖 子:188
专家分:24
注 册:2012-2-11
结帖率:94.64%
已结贴  问题点数:20 回复次数:1 
一个string对象和数值件相互转换的代码
程序代码:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;

string convertToString(double x)//将数值转换为string
{
    ostringsream o;
    if(o<<x)//<<这个符号什么作用?叫什么 ?难道是移位?还是类似于cout<<x?
        return o.str();//o.str(),str()函数什么用?
    return "conversion error";
}

double convertFromString(const string &s)//将string转换为数值
{
    istringsream i(s);
    double x;
    if(i>>x)
        return x;
    return 0.0;
}

int main()
{
    //数值转换为string   
    //C方法
    char b[10];
    string a;
    sprintf(b,"%d",1975);//这个函数式干嘛用的啊?
    a=b;
    cout<<a<<endl;
    //c++方法
    string cc=convertToString(1976);
    cout<<cc<<endl;
    //string 转换为数值--c++方法
    string dd="2006";
    int p=converFromString(dd)+2;
    cout<<p<<endl;
    return 0;
}
谢谢了哈

[ 本帖最后由 a99875984 于 2013-3-18 13:13 编辑 ]
2013-03-18 13:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
你问的这些问题别人无法回答呀,因为这些都是C/C++中最基础的知识,你得看书,系统的学习C/C++。

BTW:你听说过 lexical_cast 吗,它可以在任意两个类型之间转换,比你这段代码通用多了
程序代码:
template<typename Target, typename Source>
Target lexical_cast(Source arg) {
    std::stringstream interpreter;
    Target result;
    if( !(interpreter<<arg) || !(interpreter>>result) || !(interpreter>>std::ws).eof() )
        throw bad_lexical_cast();
    return result;
}

2013-03-18 14:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-401173-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.112865 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved