当前位置:首页 » 网络连接 » 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