當前位置:首頁 » 網路連接 » char連接

char連接

發布時間: 2021-02-25 23:26:20

⑴ 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]={''};
aa[0]=a;
aa[1]=a2;
//------------------
stringaa=string("")+a+a2;
//-----------------
charaa[10]={''}
sprintf(aa,"%c%c",a,a2);

so easy

⑹ C語言如何實現兩個非常量的CHAR字元串連接

//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *scat(const char *a,const char *b) /*返回合並的字元串的地內址*/
{
char *rt=malloc(sizeof(char)*(strlen(a)+strlen(b)));
strcpy(rt,a);
return strcat(rt,b);
}
int main(void)
{
char phone[]="1234";
printf("%s\n",scat("telphone:",phone));/*示例容*/
return 0;
}
//---------------------------------------------------------------------------

⑺ c++中字元的連接

std::string 的operator + 以及 operator +=

如下:

#include <string>
#include <iostream>

using namespace std;

int main()
{
string a="abcd";
char b[10]="ffff";

a += b;//先連接,並存在a
strcpy(b, a.c_str());//再賦值給b
cout << b <<endl;

}

⑻ 調用一個函數add(char*,char*);完成兩個字元串的連接。

看下標准實現
char *strcat(char *strDest, const char *strSrc) //將源字元串加const,表明其為輸入參數
{
char *address = strDest; //該語句若放在assert之後,編譯出錯
assert((strDest != NULL) && (strSrc != NULL)); //對源地址和目的地址加非0斷言
while(*strDest) //是while(*strDest!=』\0』)的簡化形式
{ //若使用while(*strDest++),則會出錯,因為循環結束後strDest還會執行一次++, //那麼strDest
strDest++; //將指向'\0'的下一個位置。/所以要在循環體內++;因為要是*strDest最後指
} //向該字元串的結束標志』\0』。
while(*strDest++ = *strSrc++)
{
NULL; //該循環條件內可以用++,
} //此處可以加語句*strDest=』\0』;無必要
return address; //為了實現鏈式操作,將目的地址返回
}

你的實現里邊返回棧地址,這是無法得到正確結果的,strcat實現可以看到,返回的是源字元串指針,所以必須確定源串空間可以容納下結果字元串,調用也不會允許add("abc","def")這樣的調用,add("abc","def")兩個地址都是const指針,調用會失敗,可以這樣調用
char a[20]=「abc」;
std::cout<<strcat(a,"def")<<std::endl;

熱點內容
網卡了的原因 發布:2021-03-16 21:18:20 瀏覽:602
聯通客服工作怎麼樣 發布:2021-03-16 21:17:49 瀏覽:218
路由器畫圖 發布:2021-03-16 21:17:21 瀏覽:403
大網卡收費 發布:2021-03-16 21:16:50 瀏覽:113
路由器免費送 發布:2021-03-16 21:16:19 瀏覽:985
孝昌營業廳 發布:2021-03-16 21:15:54 瀏覽:861
網速增速代碼 發布:2021-03-16 21:15:29 瀏覽:194
怎麼黑光纖 發布:2021-03-16 21:14:54 瀏覽:901
埠增大 發布:2021-03-16 21:14:20 瀏覽:709
開機沒信號是什麼原因 發布:2021-03-16 21:13:45 瀏覽:645