IO的基本操作

在c++中有输入输出流可分为三种,从控制台读取或输出(iostream),从文件中读取或输出(fstream),c从字符串中输入或输出(sstream)。

文章目录

iostream

iostream库中包含两个类型,istream(从控制台输入)和osream(从控制台输出),cin是一个istream对象,从标准输入读取数据,cout是一个ostream对象,向标准输出写入数据。>>运算符,用来从一个istream对象读取输入数据,<<运算符,用来向一个ostream对象写入输出数据。接下来结合具体例子对iostream进行讲解。
向控制台窗口输入字符串,使用cin读取输入数据,并使用cout输出数据,其中getline是一次读取一行数据。

#include<fstream>
#include<string>
#include<vector>
using namespace std;
int main() {
	string str;
	while (getline(cin,str)) {
		cout << "the output is:   "<<str << endl;
	}
	system("pause");
	return 0;
}

结果如下:
在这里插入图片描述

fstream

头文件中定义了三个类型来控制文件读取操作,ifstream:从一个给定文件读取数据,ofstream:向一个文件写入数据,fstream既可读取数据也可写数据。文件类继承了ostream的行为,同时还有自己的操作。
在这里插入图片描述
下面实现简单的文件读写操作,从控制窗口输入数据存放到文件中,从文件中读取数据并输出。

int main() {
	//从控制台读取输入,并写入文件中。
	ofstream write;
	write.open("first.txt",ofstream::app);
	string str1;
	while (getline(cin, str1)) {
		write << str1 << endl;
	}
	write.close();
	//按照行读取文件中数据,并存储在数组中,从数组中读取并输出
	vector<string>vec;
	ifstream read;
	read.open("first.txt");
	string str;
	while (getline(read, str)) {
		vec.push_back(str);
	}
	read.close();
	int i = 0;
	for (vector<string>::iterator it = vec.begin(); it != vec.end(); ++it, ++i) {
		cout << "第  " << i + 1 << "行  " << *it << endl;
	}
	system("pause");
	return 0;
	
}

在这里插入图片描述

sstream

和文件读取类似,在sstream头文件中定义了三个支持读取string类型的类,istringstream从string 读取数据,ostrinigstream向string写入数据,iostringstream可读可写。
在这里插入图片描述
注意:getline默认是按照行读取数据,sstream是按照string读取数据,即当一行有许多单词时,其按照单词进行读写操作。
下面实现从文件中按照行读取数据,并使用istringstream将数据读取到数组中,最后将数组中数据输出。
这里实现了一个文件读取函数,将读取结果存到数组中。

#include<iostream>
#include<sstream>
#include<stdlib.h>
#include<string>
#include<vector>
#include<fstream>
using namespace std;
vector<string> read_file(string file) {
	ifstream read;
	read.open(file);
	string line;
	vector<string>vec;
	while (getline(read, line)) {
		string word;
		istringstream record(line);
		while (record >> word) {
			vec.push_back(word);
		}
	}
	return vec;
}
int main() {
	string file = "first.txt";
	vector<string>res = read_file(file);
	for (string word : res) {
		cout << word << " ";
	}
	system("pause");
	return 0;
	
}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值