- 一、c语言中的字符串
c中没有string类型,c中字符串是通过字符指针来间接实现。
字符串常量是由双引号相括的字符序列表示。
char* string = "Student";
对字符指针可以用串常量初始化,实际上系统完成了2步操作:先申请堆空间,然后填入串值。
char* string = new char[8];
strcpy(string,"Student");
示例一:
c中的char* 定义字符串,不能改变字符串内的字符的内容,但却可以把另外一个字符串付给它
#include "stdio.h"
int main()
{
char* str1 = "hello world\n";
str1 = "aa";
str1[1] = "a"; //报错
printf("%s",str1);
}
C++中使用char*定义字符串,同样不能改变字符串内的字符的内容,但却可以把另外一个字符串付给它
#include<iostream>
using namespace std;
int main()
{
char* pstr = "hello world";
pstr = "aa";
pstr[1] = "a"; //报错
cout<<pstr<<endl; //直接输出的方式。
}
#include<iostream> using namespace std; int main() { char* str = {"abcd"}; for(int i = 0;i<4;i++) { cout<<str[i]; } //输出abcd cout<<endl; cout<<str<<endl; //输出abcd return 0; }
也可以用字符数组存放字符串:
char str[7];
声明一个字符数组时,有不同的初始化方法。
1. 逐个字符对数组元素赋初值:
char str1[7] = { 'S','t','u','d','e','n','t' };
这种方式的初始化不会添加 '\0'。
2. 用串常量初始,会自动添加结束标志符 '\0' 。
char str2[8] = { "Stuent" };
char str3[] = { "Stuent" };
或者省略 { };
char str3[8] = "Stuent" ;
一个一维数组可以存放一个字符串,二维数组可以对串进行管理,例如:
char strs[10][20]; //表示可以存放10个长度为20的字符串
如果改用指针数组,就不必限制每个串的长度,例如:
char* name[5] = { "Cheng","Li","Zhang","Huang","He"};
注意:char *s=”string”的内容是不可以改的;char s[10]=”string”的内容是可以改的
char类型用于定义一个字符,存储一个字符,占一个字节;字符型数据为一对单引号相括的一个字符。例:char = 'A'; //定义一个字符'A'。
补充:对于一些常见的控制符,c++用简洁的转义符代替。例如:换行表示为 ‘/n’。
为了表示已经用作语义符的符号如 \ , ‘ ,” 等,要添加 \ 转义:‘ \\ ’ ‘ \’ ’ ‘ \" ’
利用cin流输入字符串时,c++把键盘操作的空格或回车都视为串结束,因此无法输入带空格的字符串。
c语言的gets接受键盘输入的空格,以回车作为结束。函数puts输出字符串。
函数gets 和puts在stdio.h中声明。
二、c++中的string
1、string 是c++封装好的一个类,包含多个成员函数,可以实现字符串的各种操作
string str1 = "My string object";
2、转化:
当 string 直接转化成 const char *时,可以通过两个函数c_str(),data成员函数,例如:
#include<iostream> #include<stdio.h> using namespace std; int main() { string s="xiaoming"; const char *a=s.c_str();//去掉const会显示编译错误 const char *b=s.data(); printf("a:[%s],b:[%s]\n",a,b); }
将char *转化成string,直接转化就可以。就是注意输出的问题:
#include<iostream> #include<stdio.h> using namespace std; int main() { char *a="xiaoming"; string s; s=a; printf("%s\n",s.c_str()); }
原文链接: https://www.cnblogs.com/LXJ-YZ/p/13158813.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/199072
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!