2013-03-01 147 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