常见IO相关函数

[TOC]

概述

IO分类:

  • 按照数据流向,可以分为输入流和输出流。
  • 按照数据类型,可以分为字符流和字节流。

程序的输出输入一般都由两种方式来组成,一种是字节流的输入输出操作,一种是字符流(串)的输入输出。

Java 语言的 IO

按照字节流可以划分为InputStream,OutputStream,分别负责字节流的输入输出。按照字符流划分为 Reader,Writer,分别负责字符的输入与输出。见下表:

Java 基本输入输出 输入 输出
字节流 InputStream OutputStream
字符流 Reader Writer

C++ 的IO

通过输入输出符号,可以操作字符流,通过 read/write 方法可以操作字节流

C++ 基本输入输出 输入(std::istream 输出(std::ostream
字符流 >> <<
字节流 std::stream::read() std::ostream::write()

标准输入输出

针对标准输入输出的字符操作常见函数如下:

// 从输入读取一个字符
int getc(FILE *_Stream);
// 从标准输入中读取一个字符(可以是回车或者空格之类的空白字符)
int getchar();
// 从标准输入读取一个字符串(直到遇到文件结束符EOF,或者回车符),将回车符换成'\0'
char* gets_s(char* _Buffer, rsize_t _Size);
// 从文件中获取一个字符
int fgetc(FILE *_Stream);
// 从文件中获取一个字符串,空格、tab不会结束读取,碰到回车或者eof会结束,并且回车或者eof会同时读取到buff
char* fgets(char* _Buffer, rsize_t _MaxCount, FILE* _Stream);

// 写入一个字符到文件流
int putc(char _Character, FILE *_Stream);
// 写入一个字符到文件流,同上。
int fputc(char _Character, FILE *_Stream);

// 写入标准输入中一个常量字符串,自带回车符
int puts(const char * _Buffer);
// 文件流中写入一个常量字符串
int fputs(const char * _Buffer, FILE* _Stream);

字符流输入输出

#include <sstream>
#include <iostream>
#inlcude <string>

std::string str = "hello world.";
istringstream iss(str);
std::string word1, word2;
// 将流中的数据输入到内存中(word1,word2变量)
iss >> word1 >> word2;
std::cout << word1 << word2 << std::endl;

文件流输入输出

#include <fstream>
#include <cstdio>

ifstream ifs("./a.txt");
std::string data;
// 将碰到空白符(空格、tab、回车)之前的数据存储到data.
ifs >> data;
// 读取一行数据到 data.
std::readline(ifs, data);

// 输入流迭代器的尾后指针.
std::istream_iterator<std::string> eos;
// 初始化输入流迭代器为文件流.
std::istream_iterator<std::string> iter(ifs);
while (iter != eos) {
    // 输入流迭代器只能“被赋值”,输出流迭代器则只能"赋值"。
    data = *iter;
    ++iter;
}

// 初始化标准输出的输出流迭代器,分隔符为","(每输出一次自动追加分隔符)
std::ostream_iterator<std::string> oiter(std::cout, ",");
*oiter = "hello";
++oiter;
*oiter = "world.";

套接字流输入输出

没有套接字的输入输出流,需要扩展输入输出流相关类:streambuf、ostream

最后修改日期: 25 2 月, 2025

作者

留言

撰写回覆或留言