C/C++ I/O处理

C标准I/O函数

putchar(c) // 将字符变量c输出到标准I/O

c = getchar() // 将标准输入的字符赋值给变量c

格式化输入输出:

printf(格式控制, 输出表列);

格式字符汇总表:

printf格式字符汇总表

格式字符 功能

%a 使用科学计数法将实数按十六进制输出,阶码前为字母p(C99标准新增)

%A 使用科学计数法将实数按十六进制输出,阶码前为字母P(C99标准新增)

%c 输出一个字符

%d 输出有符号十进制数

%e 使用科学计数法输出实数,阶码前为字母e

%E 使用科学计数法输出实数,阶码前为字母E

%f 输出十进制实数

%g 阶码小于-4或超过指定精度时用%e,否则使用%f格式输出

%G 阶码小于-4或超过指定精度时用%E,否则使用%f格式输出

%i 与%d相同,输出十进制有符号整数

%o 输出无符号八进制整数

%p 输出指针

%s 输出字符串

%u 输出无符号十进制整数

%x 输出十六进制整数(字母为小写)

%X 输出十六进制整数(字母为大写)

%% 输出百分号(%)

引自:http://hi.baidu.com/haoyuewuwei/item/e0bc02bfa097a0432bebe342

格式化输入:

scanf(格式控制, 地址列表)

将标准输出的内容输出到地址列表

C文件操作

文件打开与关闭

fopen(文件名, 使用文件打开方式);

fopen若不能正常打开,则返回NULL

fclose关闭文件

File *file = fopen("test.c", "w");

fclose(file);

文件操作

fputc(ch, fp)和ch=fgetc(fp),与标准的输出输出接近

fread(buffer, size, count, fp);

fwrite(buffer, size, count, fp);

fprintf(文件指针, 格式化字符串, 输出表列);

fscanf(文件指针, 格式化字符串, 输入表列);

putw和getw 对整数进行操作

fgets(str, n, fp);

fputs(str, fp);

文件定位:

rewind(fp);将文件指针回复到文件开始

fseek(文件类型指针, 位移量, 起始量); // 定位到起始量+位移量的位置,用于实现随机读取

ftell // 获取当前位置

文件状态:

reof(fp)

ferror(fp)

clearerr(fp)

C++标准输入输出

cin

cout

cerr

clog

C++基本流对象istream和ostream

关于C++输入输出流的API可参考:http://www.cplusplus.com/reference/iostream/

fstream和stringstream都来继承于istream或者是ostream

基本结构图如下:

C/C++ I/O处理

注意:

(1).支持国际字符的支持,即支持wchar_t,在所有的流前加一个w符号,如istream变成wistream即可,其余同理可得。

(2).对象不可复制,同时也不存储在vector中,形参和返回值不能为流类型,只能传递引用

往流iostream中读写字符

#include<iostream>
#include<sstream>
using namespace std;
int main()
{
    iostream os;
    string str;
    os << "aa" << endl;
    os >> str;
    cout << str << "n";
    return 0;
}

iostream os 是同时具有输入和输出功能的流对象。

os << "aa" 将字符串输入到os流中;

os >> str 则是将 os 中存储的内容输出到字符串中;

然后才通过控制台的输入流 显示到终端。

文件流fstream(理解为filestream)

#include<iostream>
#include<fstream>
using namespace std;
int main()
{
    ifstream ifs;
    ofstream ofs;
    string str;
    ifs.open("in.txt");
    ofs.open("out.txt");
    while(ifs >> str){
        cout << str << "n";
        ofs << str << "n";
    }
    ifs.close();
    ofs.close(); 
    return 0;
}

先在当前目录下新建一个in.txt和out.txt文件,并向in.txt文件中输入一些内容。

while(ifs >> str) 循环从ifs流出输出文件内容,每次为结束符或者空字符作为一行的结束,直到文件结尾。

ofs << str则是将str输入到ofs文件流中,保存到out.txt文件中。

流条件状态

状态位strm::iostate : strm::badbit, strm::failbit, strm::eofbit

方法

eof(); 文件是否设置了流的eofbit,是则返回true
fail();
bad();
good();
clear(); 重置所有状态位为有效位
clear(flag); 清除状态指定状态位
setstate(flag) 设定状态位
rdstate() 返回当前状态位(相当于getstate?)

C/C++ I/O处理

尝试往标准输入流中写非法内容,输入流将发生错误中断并退出
原文链接: https://www.cnblogs.com/haiyupeter/archive/2012/09/01/2666518.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/61448

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 上午9:59
下一篇 2023年2月9日 上午10:00

相关推荐