目录
1.char数组:
char的赋值方法:
char数组的赋值方法:
ASCLL码:
char类函数:需包含头文件
2.stirng:
3.对char数组的输入:
1.cin:
2.cin.etline():
3.cin.get():
cin.getline()与cin.get():
4.对string的输入:
1.cin:跟上文char数组一样,遇到空格会()停止,就不讲了。
2.getline():注意,这边时直接使用getline(),而不是以cin的类成员来使用。
5.细讲string:
1.内存智能:
2.使用智能:
string拼接:
原始字符串(raw):
超大分量,放心食用!
1.char数组:
char数组是一种很好的数组实例,可做为低级的string,也可以作为小游戏的像素。
char的赋值方法:
首先,我们要知道char类型的赋值方法:
char a='a';
char的形式为字符,因此赋值时要加上单引号(')。
char数组的赋值方法:
如果要给char数组赋值,将是这样:
char a[5]={'a','b','c','d','e'};
这样做十分的麻烦,要用上大量的单引号和逗号,其实我们可以把它当作string来使用,直接用双引号来赋值:
char a[5]="abcde";//和上面的代码是一样的
怎么样?是不是快多了?
也可以用之前(【从零开始学c++】3.复合类型(数组)_湿布的博客-CSDN博客)那样让编译器计算元素个数(不加索引),即
char a[]="abcde";//和上面的代码是一样的
ASCLL码:
ASCLL码以斜杠()开头,可做字符,也可做键码(键码这东西以后再说)。
每个字符都对应一个ASCLL码,如:'A'对应的是/65,空字符则是/0。
因此,我们甚至可以用ASCLL码来代替字符。看!:
int a=65;cout<<(char)a;
首先定义了一个数字变量,当输出时强制转换为char型。因此,从ASCLL码表中查找/65,就是'A'。
因此,这同时也说明了char类型只能是字符('a'),不能是字符串("a"):
'S' "S" 符号区别: (')+(') (")+(") 类型区别: 字符常量 字符串 组成: (83) (83)+()
char类函数:需包含<cstring>头文件
1.strcpy():复制 需包含2个对象:1.复制的对象 2.复制的内容
#include<iostream> #include<cstring> using namespace std; int main() {char a[20]="anb";char b[20]="bnb";cout<<"复制前:"<<endl;cout<<"a:"<<a<<endl<<"b:"<<b<<endl;strcpy(a,b); cout<<"复制后:"<<endl;cout<<"a:"<<a<<endl<<"b:"<<b<<endl;}
2.strcat():附加 需包含2个对象:1.被附加的对象 2.附加的内容
#include<iostream> #include<cstring> using namespace std; int main() {char a[20]="anb";char b[20]="bnb";cout<<"复制前:"<<endl;cout<<"a:"<<a<<endl<<"b:"<<b<<endl;strcat(a,b); cout<<"复制后:"<<endl;cout<<"a:"<<a<<endl<<"b:"<<b<<endl;}
2.stirng:
1.要使用string类,要在程序中包含string类。可以使用std命名空间,也可以使用std::string。
你可以把string看成一个智能的char数组。举个例子:
char数组 string 内存有限 内存无限
3.对char数组的输入:
1.cin:
cin>>(变量名);
#include<iostream> using namespace std; int main() { char a[20]; cin>>a; cout<<a; }
我们如果用cin>>直接赋值,会发现输入的内容只有前一部分,空格后的部分并未输入!
cin有一个特性,就是当赋值时遇到了空格(),cin就会停止输入!如果我们将代码改改:
char a[20],b[20];cin>>a>>b;cout<<a<<endl<<b;
输入:DW DWAD a=DW b=DWAD
此时缓冲区内存在DW DWAD,cin将DW赋值给a,又在缓冲区发现了DWAD,于是又把DWAD赋值给了b。
因此我们不使用cin,因为它存在隐患。
2.cin.etline():
使用cin的类成员getline(),使用方法:
cin.getline(a,20);
cin.getline()包含2个参数,第一:char数组名,第二:数组元素数。
该函数最多只能读取(元素数-1)个元素数(就是20-1,19个),余下的空间要储存空字符()。
因此,该语句将实现把输入内容赋值给数组a。
输入:DADA DADA 输出:DADA DADA
3.cin.get():
使用cin的类函数get(),使用方法与cin.etline()类似,解释参数的方式也相同。
但是!cin.get()不读取换行符!这意味什么?看!:
#include<iostream> using namespace std; int main() {char a[20];char b[20];cout<<"请输入:";cin.get(a,20);cin.get(b,20);cout<<"a:"<<a<<endl;cout<<"b:"<<b<<endl; }
解决办法:再调用一次
cin.get(a,20).get();
cin.getline()与cin.get():
名称: cin.getline() cin.get() 作用: 对字符数组的输入 对字符数组的输入 共同点: 1.都会换行 2.都是cin的类函数 区别1:优点 使用简单 检查错误简单 区别2:失效位 会设置失效位 不会设置失效位
4.对string的输入:
1.cin:跟上文char数组一样,遇到空格会()停止,就不讲了。
2.getline():注意,这边时直接使用getline(),而不是以cin的类成员来使用。
使用方法:
1.getline(cin,(string名)):该函数会直接将输入的内容赋值给指定的string(a):
getline(cin,a);
2.getline(cin,(string名),'(某个字符)'):该函数与第一种不同,它会在输入的内容中查找指定的字符,然后在把前面的在赋值,与第一种相比,多了一个范围(指定的字符)。
#include <iostream> using namespace std; int main() {string a;getline(cin,a,' ');cout<<a; }
5.细讲string:
在前面我们曽讲到string是智能的char数组。那么相比char数组,string智能在哪?
1.内存智能:
名称: char数组 string 内存: 由索引决定内存 无限
2.使用智能:
虽然string本身就是char数组,但我们可以将string当作简单变量。
因此,我们也可以把char数组赋值给string:
#include <iostream> using namespace std; int main() {string a;char b[20]="DAW";a=b;cout<<a; }
我们也可以像使用char数组那样对string使用索引:
#include <iostream> using namespace std; int main() {string a="oello(你好)";//定义cout<<a<<endl;//先输出a[0]='h';cout<<a;//更改第一个字符为‘h’再输出 }
但要注意的是:更改的必须是字符!原来是字符,更改后还是字符!
#include <iostream> using namespace std; int main() {string a="oello(你好)";//定义cout<<a<<endl;//先输出a[0]='h';cout<<a;//更改第一个字符为‘h’再输出 }
但如果更改的是字符串,就会变成随机的字符串:
#include <iostream> using namespace std; int main() {string a="oello(你好)";cout<<a<<endl; a[7]='h';cout<<a; }
因为a[7]是字符串("好"),因此a[7]的前一个元素a[6]("你")就会随机:
同时也潜在一个问题!string包含的的内容不只有char型!像上面的oello(你好)一样,你和好就不是char型!如果试图用string索引的方法输出,那么给你的就是一片空白:
#include <iostream> using namespace std; int main() {string a="oello(你好)";cout<<a[6]<<endl; }
string拼接:
string类可以对string进行拼接:使用+号:
#include <iostream> using namespace std; int main() {string a="oello(你好)";cout<<a<<endl;a+=" 我不好";cout<<a; }
该程序会先定义一个string,然后在末尾加上"我不好"。
原始字符串(raw):
输出什么就是什么,就算是转义序列(n)在这你也就是"n"。
以R为开头,用双引号和括号("()")包住, 双引号和括号就是定界符。
#include<iostream> #include<cstring> using namespace std; int main() {cout<<R"(输出n)"; }
温馨提示:DEV C++无法使用raw原始字符串。 上面的代码是使用VS(Visual Studio)编译的。
都看到这了,就请您点一个免费的小红心和关注吧!