c++中字符串与数字的转换

字符串流类(sstream)用于string的转换

:相关头文件

istringstream:字符输入流

ostringstream:字符输出流

使用方法:

#include 
#include 
#include 
using namespace std;
bool StrToNum(const string& s , int& n)//return bool 
{
    istringstream iss(s);
    return iss >> n;
}
bool StrToNum(const string& s , double& n)
{
    istringstream iss(s);
    return iss >> n;
}
bool StrToNum(const string& s , float& n)  
{
    istringstream iss(s);
    return iss >> n;
}
string NumToStr(int& n)
{
    ostringstream oss;
    oss << n;
    return oss.str();
}
string NumToStr(double& n)
{
    ostringstream oss;
    oss << n;
    return oss.str();
}
string NumToStr(float& n)
{
    ostringstream oss;
    oss << n;
    return oss.str();
}

int main()
{	
    int i = 0;
    cout << StrToNum("123",i) <
    int ni = 123;
    cout <

输出结果:


那现在就出现了一个问题?利用函数重载的方式这么多数据类型我们都需要一个函数一个函数的写吗?能不能只用一个函数就实现这个功能呢?

尝试一下利用C语言宏定义的方式定义函数

#include 
#include 
#include 
using namespace std;
#define TO_NUMBER(s,n) (istringstream(s) >> n)
#define TO_STRING(n) (((ostringstream&)(ostringstream () <
输出结果:




你可能感兴趣的:(c++)