在刷题的时候,经常会遇到需要输入字符串的题目,有的要求保留空白符,有的不要求保留。

所以针对读取字符串做了如下总结:

1.cin

读取字符串,遇空格、TAB、回车结束

#include <iostream>
using namespace std;

int main()
{
  char a[20];//也可以用string a;不过需要加上头文件<string>
  cin>>a;
  cout<<a;
  return 0;
}

2.cin.get()

用法1: cin.get(字符变量名)接受一个字符

#include <iostream>
using namespace std;

int main()
{
  char ch;
  ch = cin.get();//或者是cin.get(ch)
  cout<<ch;
  return 0;
}

用法2:cin.get(字符数组名,接收字符数目)接受一个字符数组,不能是string定义的字符串,可以接受空白符

#include <iostream>
using namespace std;

int main()
{
  char a[20];
  cin.get(a,10);
  cout<<a;
  return 0;
}

注:输出为9个字符+1个‘/0’

3.cin.getline()

cin,getline(字符数组名,可以接受的字符个数,结束字符)接受一个字符数组(不能是string字符串),可以接受空白符

注:“结束字符”默认为'/0'

#include <iostream>
using namespace std;

int main()
{
  char a[20];
  cin.getline(a,10);
  cout<<a;
  return 0;
}

 

当结束字符不为默认字符时

#include <iostream>
using namespace std;

int main()
{
  char a[20];
  cin.getline(a,10,'a');
  cout<<a;
  return 0;
}

4.getline()

getline(cin,字符串名)接受一个字符串,可接受空白符,需包含#include<string>

#include <iostream>
#include <string>
using namespace std;

int main()
{
  string a;
  getline(cin, a);
  cout<<a;
  return 0;
}

 

总结:1.可以接受string字符串的只有cin>>和getline(cin, str),其他都只能接受字符数组,其中cin.get()还可以接受单个字符;

   2.char a[]的字符串都以'/0'结束,所以输出的字符个数比要求的少一个,最后一个位置需要来存放'/0';

    而string 的字符串结尾没有'/0'。

ps: 个人感觉string比较好用。

 

posted on 2017-07-27 20:44  小小糖果tt  阅读(298)  评论(0)    收藏  举报