c++ char字符组拼接
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ char字符组拼接相关的知识,希望对你有一定的参考价值。
char a[10],b[10];
char *c=",";
char *d="\t";
......
char *e=strcat(b,c,d,a);
会在程序中输入a=james,b=bond;
想要显示结果为bond, james(james 与bond 之间有逗号和一个空格)
但上述做法不能build 成功,求大神指点!!!
主要使用两个函数strcat和strcpy,strcat本身就是连接字符串的,但是要保证空间足够。
例:
int main()
char buff[1024];
memset(buff, 0, sizeof(buff));
const char *buff2 = " test";
strcpy(buff, "abc");
strcat(buff, buff2);
printf("%s", buff);
扩展资料
C语言:通过指针对字符串进行拼接
#include <stdio.h>
#include<string.h>
void Pointer_stringcat(char *str1,const char *str2)
while (*(str1++)!='\\0'); //一直将指向str1的指针移到字符串的末尾
str1--;
while (*str2!='\\0')
*(str1++) = *(str2++); //开始连接
*str1 = '\\0'; //连接完后,添加上字符串结束标识符
int main(int argc, const char * argv[])
char s1[] = "hello "; //这个是一个字符串变量,字符串的值可以被修改
char *s2 = "world!"; //这个是一个字符串常量,不能更改字符串的值
//char s1[] = "hello ";
//char s2[] = "world!";
char const *pt = s1; //始终不改变pt的指向,pt一直指向s1的首地址
Pointer_stringcat(s1,s2); //调用自定义的字符串连接函数
puts(pt);
return 0;
这里给大家分享下c语言拼接字符数组的方法如下。
1、首先在打开的软件中,第一行代码#include <stdio.h>,如下图所示。
2、然后在第二行代码#int main(),如下图所示。
3、接着输入第三行,如下图所示,scanf("d%,d%",&a,&b)。
4、然后第四行代码char ch1[] = "hello";char ch2[] = "world";char che[20] ;int i = 0;while(ch1[i] != '\\0')ch3[i] = ch1[i];。
5、最后在第五行代码输入 ,如下图所示就完成了。
参考技术B例:
#include<iostream>
#include<windows.h>
#include<cstring>
usingnamespacestd;
intmain()
chars1[10]="wayne";
chars2[10];
intn=10;
itoa(n,s2,10);
strcat(s1,s2);
cout<<s1<<endl;
system("pause");
return0;
扩展资料
C++中string函数连接
string&operator+=(conststring&s);//把字符串s连接到当前字符串的结尾
string&append(constchar*s);//把c类型字符串s连接到当前字符串结尾
string&append(constchar*s,intn);//把c类型字符串s的前n个字符连接到当前
参考技术C 假设a、b赋值已经完成, 可以通过以下方式来处理:一、
strcat(a, ", ");
strcat(a, b);
printf(a);
二:
char e[20];
sprintf(e, "%s, %s", a, b);
printf(e);本回答被提问者和网友采纳 参考技术D 假设a、b赋值已经完成, 可以通过以下方式来处理:
一、
strcat(a, ", ");
strcat(a, b);
printf(a);
二:
char e[20];
sprintf(e, "%s, %s", a, b);
printf(e);
数据拼接时输出成员变量c++
【中文标题】数据拼接时输出成员变量c++【英文标题】:Outputting member variables when data is spliced c++ 【发布时间】:2012-11-29 02:50:06 【问题描述】:您好,我目前遇到一个问题,我想从 2 个单独的类中输出数据,一个是基类,一个是派生类,我想重载
#include <iostream>
using namespace std;
class A
char* A;
char* B;
public:
A() A = ' '; B = ' ';
A(char* pLast, char* pFirst)
A = new char [strlen(pLast) + 1];
B = new char [strlen(pFirst) + 1];
strcpy(A,pLast);
strcpy(B,pFirst);
;
class C:public A
int X;
char Y;
int Z;
public:
C(char* A, char* B, int X, char Y, int Z)
:A(A,B)
//do stuff here
friend std::ostream& operator<<(std::ostream& out, const C& outPut)
out << outPut.A << "," << outPut.B << "," <<outPut.X<< "," << outPut.Y << "," << outPut.Z << endl;
return out;
;
当我尝试运行它时,它告诉我 A 和 B 超出范围,这是有道理的,因为这些成员在 A 类中是私有的,我不知道如何解决这个问题。我尝试创建 getter 方法来访问 A 和 B,但数据显示为空白。我什至尝试将 A 类的对象添加为 B 类的成员,以尝试允许访问 B 类中的成员,但数据仍然为空白。我该如何解决这个问题?
【问题讨论】:
你为什么要用你已经在课堂上使用过的名字来命名成员? 与问题没有直接关系,但就目前而言,B
是A
的嵌套类(除了派生自A
)。你想要这样吗?
除了尼克说的,A
的构造函数也有问题。你根据成员A
的当前大小分配空间,而不是根据pLast
和pFirst
的大小。
【参考方案1】:
有几种方法可以解决这个问题。一种方法显然是使A
的成员受保护而不是私有。然后派生类B
可以访问它们。
另一种方式确实是 getter 函数。它们对您不起作用的事实与您的构造函数中的问题和代码中的其他问题有关。但公共 getter 也有一个缺点,即允许 任何人(不仅仅是派生类)访问您的数据成员的值。
这是第三种方法,我认为这在您的情况下是有意义的:在A
中定义一个单独的operator<<
,并在为B
定义一个运算符时使用该运算符:
#include <cstring>
#include <iostream>
using namespace std;
class A
char* _a;
char* _b;
public:
A()
: _a(),_b()
A(const char *pLast, const char *pFirst)
: _a(new char [std::strlen(pLast)]),
_b(new char [std::strlen(pFirst)])
strcpy(_a,pLast);
strcpy(_b,pFirst);
friend std::ostream& operator<<(std::ostream& out, const A& obj)
out << obj._a << "," << obj._b;
return out;
;
class B : public A
int _x;
char _y;
int _z;
public:
B(const char *pLast, const char *pFirst, int x, char y, int z)
: A(pLast,pFirst),
_x(x),_y(y),_z(z)
friend std::ostream& operator<<(std::ostream& out, const B& obj)
out << static_cast<const A&>(obj) << ','
<< obj._x << ','
<< obj._y << ','
<< obj._z;
return out;
;
int main()
B b("hello","world",1,'a',3);
std::cout << b << std::endl;
return 0;
我还纠正了我发现的其他问题,所以上面确实有效。
【讨论】:
以上是关于c++ char字符组拼接的主要内容,如果未能解决你的问题,请参考以下文章