2013-03-01 148 views
0

我encouter一个问题,这里是我的代码,C++转换_bstr_t为int和int转换成_bstr_t

  _bstr_t bstrTrans=L"2"; 
    wsprintf(buf,L"insert into inven(ID) values(%s)",(wchar_t *)bstrTrans)//insert into database 
//this can work fine, now we want to let bstrTrans add 1, likes this 
      int bstrTrans2 = atoi(bstrTrans) + 1; 
    wsprintf(buf,L"insert into inven(ID) values(%s)",(wchar_t *)bstrTrans2) 
// now ,it cannot work. 

所以任何机构可以帮助我吗?

+0

您没有定义'_b_str_t'类型,因此很难回答...也许使用'snprintf'是相关的。 – 2013-03-01 08:55:19

+0

_bstr_t是vC++中的基本数据类型 – 2013-03-01 08:56:15

+0

'bstrTrans2'是一个'int',并且您尝试将其打印为'wchar_t *'。这是不可能的,并可能导致崩溃。 – cedrou 2013-03-01 09:04:10

回答

1

为什么不简单秒 - > d?

_bstr_t bstrTrans=L"2"; 
    wsprintf(buf,L"insert into inven(ID) values(%s)",(wchar_t *)bstrTrans) 

//insert into database 
//this can work fine, now we want to let bstrTrans add 1, likes this 
    int bstrTrans2 = atoi(bstrTrans) + 1; 
    wsprintf(buf,L"insert into inven(ID) values(%d)",bstrTrans2) 

编辑:嗯,这项工作?

_bstr_t bstrTrans=L"2"; 
    wsprintf(buf,L"insert into inven(ID) values(%s)",(wchar_t *)bstrTrans) 

//insert into database 
//this can work fine, now we want to let bstrTrans add 1, likes this 
    char t[30]; 
    bstrTrans = itoa (atoi (bstrTrans) + 1 , t,10); 
    wsprintf(buf,L"insert into inven(ID) values(%s)",(wchar_t *)bstrTrans) 
+0

他他,干得好!但他可能要保留字符串,不仅要打印它... – cedrou 2013-03-01 09:21:19

+0

谢谢,这可以正常工作 – 2013-03-01 09:57:26

1

没有测试,但它应该很好地工作:

const _wchar_t pBuffer[16] = {0}; 
wsprintf(pBuffer, L"%u", bstrTrans2) 
_bstr_t bstrTrans3(pBuffer); 
wsprintf(buf,L"insert into inven(ID) values(%s)",(wchar_t *)bstrTrans3); 
+1

我想让bstrTrans3 = bstrTrans2 + 1 – 2013-03-01 09:08:19

+0

我不明白...你想要bstrTrans3 = bstrTrans2 + 1 = bstraTrans + 2? – cedrou 2013-03-01 09:14:10

+0

谢谢你的回答,我已经解决了这个问题。 – 2013-03-01 09:57:54