char連接
⑴ C++字元串連接問題,如何把char a與char b 連接轉換成char* c
c = a + b,執行的是整數相加。
比如a = 3,b = 5,則c = 8,當兩個數的和超過127時,會產生溢出的。
⑵ c++中 不使用任何庫函數如何連接兩個char*字元串
創建一個新數組A,長度是2個長度之和.
memcpy 第一個到位置A+0開始
memcpy 第二個到位置A+第一個的長度開始
如果memcpy也不能用,你就自己for循環,自己一個一個賦值
⑶ C語言 strcat連接兩個char *報錯,但兩個char []可以,為什麼
void main()
{
char *a="a";
char *b="b";
cout<<strcat(a,b)<<endl;
}
你這里a和b都指向常量字元串版地址,常量字元串放在常量空間中,而常量字元串是不容許修改的,常量空間是只權讀的, 所以strcat(a,b)對a指向的常量空間地址進行寫操作,當然會運行異常,
而改為a[],則不一樣,數組保存在棧空間,棧空間的內存是可以讀寫的,當然你那樣定義還是有可能運行異常,因為越界了,最好給a定義一個足夠的空間,
例如char a[3]="a";
⑷ 如何簡單,直接地把兩個char*類型字元串連接起來
char*轉換
Qt下面,字元串都用QString,確實給開發者提供了方便,想想VC裡面定義的各種變數類型,而且函數參數類型五花八門,經常需要今年新那個類型轉換
Qt再使用第三方開源庫時,由於庫的類型基本上都是標準的類型,字元串遇的多的就是Char*類型
在Qt下怎樣將QString轉char*呢,需要用到QByteArray類,QByteArray類的說明詳見Qt幫助文檔。
因為char*最後都有一個『/0』作為結束符,而採用QString::toLatin1()時會在字元串後面加上『/0』
方法如下:
Qstring str;
char* ch;
QByteArray ba = str.toLatin1();
ch=ba.data();
這樣就完成了QString向char*的轉化。經測試程序運行時不會出現bug
注意第三行,一定要加上,不可以str.toLatin1().data()這樣一部完成,可能會出錯。
補充:以上方法當QString里不含中文時,沒有問題,但是QString內含有中文時,轉換為char*就是亂碼,採用如下方法解決:
方法1:
添加GBK編碼支持:
#include <QTextCodec>
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
然後改變上面的第三行為:QByteArray ba = str.toLoacl8Bit(); toLoacl8Bit支持中文
方法2:
先將QString轉為標准庫中的string類型,然後將string轉為char*,如下:
std::string str = filename.toStdString();
const char* ch = str.c_str();
⑸ 請問C++里怎麼把兩個char型鏈接起來組成字元串不要告訴我把單字元存
charaa[3]={'