读书人

int转化为string的宏看看小弟我哪里写

发布时间: 2013-03-27 11:22:42 作者: rapoo

int转化为string的宏看看我哪里写错了

#define I2S(i) char temp[64];sprintf(temp, "%d", ss);string s(temp)


首先这个宏报错,应该怎么改
另外这样写应该会出一个问题,我两次用I2S的时候 肯定会重定义temp了,应该怎么改下比较好呢
求大神指点
[解决办法]
#define I2S(str, i) \
{\
char tmp;\
sprintf(tmp, "%d", i);\
str.assign(tmp);\
}

[解决办法]
重名可以用作用域解决

但是你做这个的目的是啥呢?
[解决办法]

#define I2S(i) char temp[64];sprintf(temp, "%d", ss);string s(temp)


话说sprintf(temp, "%d", ss)中的ss是哪里来的?应该是i吧?

其次,怕重定义的话,那就加上花括号,限定temp[64]的作用域。
1楼已经给了代码原型
[解决办法]
引用:
C/C++ code?123456#define I2S(str, i) \{\ char tmp;\ sprintf(tmp, "%d", i);\ str.assign(tmp);\}

出作用域了s就没了 没啥意义的
真要做需要把string名字传过来吧
[解决办法]

#include <iostream>
#include <string>
using std::string;
using namespace std;
#include <stdlib.h>

#define intToStr(number,buffer) itoa(number,buffer,10)

int main()
{
char result[32] = {0};
intToStr(12345,result);
fprintf(stderr,"value is %s\n",result);
memset(result,0,32);
intToStr(54321,result);
fprintf(stderr,"value is %s\n",result);
return 0;
}

itoa是库函数 在stdlib里

读书人网 >C++

热点推荐