**
正確方法:
cstring m_head;
char *codefile;
codefile=(lpstr)(lpctstr)m_head;//正確,想辦法去掉字尾
補充:int fnlen = m_head.getlength() ; //strcspn(str,".");
codefile=new char[fnlen+4];
codefile=(lpstr)(lpctstr)m_head;//正確,想辦法去掉字尾
for(int i=fnlen-1;i>3;i--)//去掉檔案字尾.pas
}錯誤方法1:int fnlen = m_head.getlength() ; //strcspn(str,".");
codefile=new char[fnlen+4];
int i=0;//名字不正確,但是不為空。
for (; icodefile[i]=m_head[i];
codefile[fnlen]=0;
錯誤方法2:
strcpy(codefile,m_head.getbuffer(fnlen)); //這句會讓程式意外中止!
m_head.releasebuffer(fnlen);
錯誤方法3:
strcpy(codefile,m_head);//這句也會讓程式意外中止!
錯誤方法4:
codefile=m_head.getbuffer(fnlen);//可以執行,但codefile的值為空
參考資料:
cstring轉化為char?
cstring::getat 這個返回乙個 char
如果是要char *
可以用cstring:getbuffer 這個返回乙個 char *
其實還可以強制轉化:
lpctstr pch;
cstring str("123456");
pch = (lpctstr)str;
上面的**實際上就是先讓系統執行了一次強制轉化的結果,所以其實有點多此一舉了……
但是這樣做更安全一些,因為char *pbuffer = (lpstr)(lpctstr)str;這樣轉換,只是讓char指標指向了ctring的記憶體位址,如果對char進行了寫操作的話,因為跨越了cstring的封裝,有可能導致cstring物件的混亂,所以重新copy乙個新的給char指標,可以做到更安全!
如果唯讀不寫,用char *pbuffer = (lpstr)(lpctstr)str;就夠了!
java 把char 轉化為int
首先說明一下問題由於某個專案的需求需要使用到 int 的陣列,由於資料最初是 string 型別的,為了方便就先把 string 型別的資料轉化成了 char 可是專案需要的是 int 的資料,所以還得把 char 轉化成 int 在轉化的過程中 1,變成了49,2變成了 50.考慮了很久才忽然想起...
Unicode型別的CString轉化為char
cstring strpath l adfafs主聲音檔案fsfsa int nlength strpath.getlength int nbytes widechartomultibyte cp acp,0,strpath,nlength,null,0,null,null char voicepa...
QString轉化為char 的方式
qt幫助文件中給的乙個demo qstring tmp test qbytearray text tmp.tolocal8bit char pch new char text.size 1 strcpy pch,text.data delete data 別的文章中也給出了一些方法 char chs...