字符串读取

预备知识:打开文件流

ifstream infile("in.txt");

ifstream infile; infile.open("in.txt");


有两种方法可以读C++字符串:使用提取操作符(>>)和getline函数。

(1)字符串提取操作符:
首先,它跳过前导空白字符,然后提取所有邻近的非空白字符。当发现空白字符时,
它就停下来。终止空白字符被留在输入流中.
提取操作符可以用来从键盘(cin流)或者使用开放式文件流从文件读数据。例如,要把一个值读入字符串
对象str1,你只需要编写下面的语句之一。
cin>>str1;  or fsIn>>str1;


(2)getline 函数
cin.getline(字符指针(char*),字符个数N(int),结束符(char));
cin的getline需要这样用:  cin.getline(s,50,'\n');
其中s需要时char *或unsigned char *,50表示读入大小(最大),'\n'表示分隔符,可以省略,默认就是这个,如果是' ',则表示空格作为截止符


getline(cin,s,'\n'),s需要是string,需要引入string头文件,std::string空间引入,'\n'可省略,如果是' ',则表示空格作为截止符


cin.getline适合你知道读入大小,固定char数组,速度快


getline(cin,s)不需要指定大小,但速度慢、生成的文件大,适合偷懒用


示例1:已知间隔符号时,可以有效省略“去标点符号”的麻烦操作

//读取一个姓名字符串,其中名和姓由逗号分开,然后打印这个姓名。
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;

void main()
{
  cout<<"Enter a name in the form<last,first>:\n";
  char lastName[20];
  cin.getline(lastName,20,',');

  char firstName[20];
  cin.getline(firstName,20,'\n');

  cout<<"Here is your name:\n"<<firstName<<' '<<lastName<<"\n";
 
}



示例2:已知间隔符号位空格:整行读取,然后分别使用sstream流切割为单个string

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

void main(void)
{
/*	char s[100];
	cin.getline(s,100,'\n');//cin.getline(s,100);//也可以,默认都是'\n'*/

	string s;
	cin.clear();
	getline(cin,s);
	cin.clear ();

	cout<<s<<endl;

	string tempStr;
	istringstream in(s);//===================//
/*	istringstream in;
	in.str(s);
*/
	
	while(in>>tempStr)
		cout<<tempStr<<" length is "<<tempStr.size()<<endl;
	in.clear();


	
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值