C++学习第四弹之复合类型2

107 阅读1分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路。

3.使用字符串

3.1数组中使用字符串

使用数组存储字符串有两种方法:一种是将数组初始化为字符串常量,一种是使用键盘或者文件输入读数据到数组。示例代码如下:

#include<iostream>
#include<cstring>
int main(){
using namespace std;
const int s=10;
char name1[s];
char name2[s]="Aboy";
cout<<"hello,i'm "<<name2<<"and you?"<<endl;
cin>>name1;
cout<<"my is"<<name1;
cout<<"and my name has"<<strlen(name1)<<"letters";
return 0;

}

strlen函数能够统计字符串长度,使用这个函数之前需要先声明cstring这个头文件,同时cstring这个头文件中还包含了许多和字符串有关的函数。

3.2字符串输入

使用示例如下:

   #include<iostream>
   int main(){
   using namespace std;
   
   const int size=20;
   
   char name[size];
   char like[size];
   cout<<"your name:\n";
   cin>>name;

   cout<<"your like:\n";
   
   cin>>like;
   cout<<name<<"like"<<like;
   return 0;
   }
   

使用cin获取字符串输入时候,需要注意一件事,那就是输入换行符时候或者说换行符是结束的标志,当你按照提示写入时候,一旦按下换行键,输入自动结束。

3.3读取一行字符串

iostream中一些类提供了一些对行的操作函数:getline()和get()。getline()和get()都会读取一行的输入直到遇见换行符,区别在于get不会丢弃换行符,getline会丢弃。,getline使用示例如下:

#include<iostream>
   int main(){
   using namespace std;
   
   const int size=20;
   
   char name[size];
   char like[size];
    cout<<"your name:\n";
    cin.getline(name,size);
    cout<<"your like:\n";
    cin.getline(like,size);
    cout<<name<<"like"<<like;
    return 0;}

getline()函数每次读取一行,遇见换行符结束,但是不保存换行符,最后一个会用\0来结束,与初始化数组结果类似。 get使用示例如下:

    cin.get(name,size);//读取第一行
    cin.get();//转到新的一行
    cin.get(like,size);//读取第二行
    //由于保留了换行符,所以第二次调用第一个字符串就是换行符,第二次调用一开始就结束了,所以第三次调用才能获取新输入
    //还有一种方法
    cin.get(name,size).get()//这样就可以下次直接获取输入了。

完整示例如下:

 #include<iostream>
   int main(){
   using namespace std;
   
   const int size=20;
   
   char name[size];
   char like[size];
   cout<<"your name:\n";
   cin.get(name,size).get();
   cout<<"your like:\n";
   cin.get(name,like).get();
   cout<<name<<"like"<<like;
   return 0;
   }