把CString轉化為char

2021-09-06 22:20:22 字數 1315 閱讀 2537

**

正確方法:

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...