C++中char型字符串
原创
©著作权归作者所有:来自51CTO博客作者zdb呀的原创作品,请联系作者获取转载授权,否则将追究法律责任
文章目录
- cin读取空格前字符串
- 以\0结尾
- cin.get()读取一行
- sizeof()和strlen()
- strcat()和strncat():字符串的合并
- strcpy()和strncpy():字符串拷贝
- memmove():字符串拷贝
- 参考博客
cin读取空格前字符串
# include<iostream>
using namespace std;
int main()
{
char a[20];
cin >> a;
cout << "输入的是:" << a << endl;
cout << "sizeof(a):" << sizeof(a) << endl;
return 0;
}
aaa 111
输入的是:aaa
sizeof(a):20
总结:读到空格便结束
以\0结尾
# include<iostream>
using namespace std;
int main()
{
char a[20];
cin >> a;
cout << "输入的是:";
for(int i = 0; a[i] != '\0'; i++){
cout << a[i];
}
cout << endl;
return 0;
}
cin.get()读取一行
# include<iostream>
using namespace std;
int main()
{
char a[20];
cin.get(a, 20);
cout << "输入的是:" << a << endl;
return 0;
}
# include<iostream>
using namespace std;
int main()
{
char a[]={'a', 32, 'b', 65, ' ', 'B', '\0'};
cout << a << endl;
cout << "sizeof(a):" << sizeof(a) << endl;
return 0;
}
sizeof()和strlen()
# include<iostream>
using namespace std;
#include<bits/stdc++.h>
int main()
{
char a[12] = {"Hello World"};
cout << "a:" << a << endl;
cout << "strlen(a):" << strlen(a) << endl;
cout << "sizeof(a):" << sizeof(a) << endl << endl;
a[5]='\0';
cout << "a:" << a << endl;
cout << "strlen(a):" << strlen(a) << endl;
cout << "sizeof(a):" << sizeof(a) << endl;
return 0;
}
a:Hello World
strlen(a):11
sizeof(a):12
a:Hello
strlen(a):5
sizeof(a):12
总结:
- strlen 输出的是可见字符的长度,遇到’\0’就结束了;
- sizeof 输出的是所有字符的长度,’\0’不结束,也算作是一个字符;
strcat()和strncat():字符串的合并
strcat():将ch2全部合并到ch1上
#include<iostream>
using namespace std;
#include<string.h>
int main()
{
char ch1[50] = {"What is your name?"};
char ch2[] = {"My name is Mike!"};
strcat(ch1, ch2);
//strcat表示ch2中的字符串复制到ch1中,ch1中我们必须保证ch1能够容纳ch1和ch2的所有字符串,否则会产生错误
cout << "ch1:" << ch1 << endl;
cout << "ch2:" << ch2 << endl;
return 0;
}
ch1:What is your name?My name is Mike!
ch2:My name is Mike!
strncat():将ch2的部分合并到ch1上
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char ch1[10] = {"12"};
char ch2[] = {"abcdef"};
strncat(ch1, ch2, 3);
//3代表需要复制的ch2中的字符串的个数
cout << "ch1:" << ch1 << endl;
cout << "ch2:" << ch2 << endl;
return 0;
}
strcpy()和strncpy():字符串拷贝
strcpy():将ch2拷贝到ch1上,抹去ch1原来的数据
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char ch1[10] = {"11222222"};
char ch2[] = {"abcdef"};
strcpy(ch1, ch2);
cout << "ch1:" << ch1 << endl;
cout << "ch2:" << ch2 << endl;
return 0;
}
strncpy()
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char ch1[10] = {"11222222"};
char ch2[] = {"abcdef"};
//把ch2前5字符赋值给ch1相应位置
strncpy(ch1, ch2, 5);
cout << "ch1:" << ch1 << endl;
cout << "ch2:" << ch2 << endl;
return 0;
}
memmove():字符串拷贝
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char ch1[15] = {"abcdefghijklmn"};
char ch2[] = {"1234567890"};
cout<<"原ch1字符串:"<<ch1<<endl;
memmove(ch1, ch2, 10);
//字符串替换
cout << "拷贝后ch1:" << ch1 << endl;
return 0;
}
原ch1字符串:abcdefghijklmn
拷贝后ch1:1234567890klmn