int转化为string的宏看看小弟我哪里写错了
int转化为string的宏看看我哪里写错了#define I2S(i) char temp[64]sprintf(temp, %d, ss)string s(te
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楼已经给了代码原型
[解决办法]出作用域了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里