基于ssh架构网站开发,公司排名的网站,邯郸做网站多少钱,网站没内容 可以备案么前言 在 C 中#xff0c;流#xff08;stream#xff09;是一种数据传输的抽象概念#xff0c;用于在程序中对输入和输出进行操作。流分为输入流和输出流#xff0c;允许数据在程序和外部设备#xff08;如键盘、屏幕、文件#xff09;之间进行传输。输入流用于从外部获… 前言 在 C 中流stream是一种数据传输的抽象概念用于在程序中对输入和输出进行操作。流分为输入流和输出流允许数据在程序和外部设备如键盘、屏幕、文件之间进行传输。输入流用于从外部获取数据输出流用于向外部发送数据。C 中的流由标准库提供支持主要包括 iostream、ifstream、ofstream 和 sstream 等类。流以流插入运算符 和流提取运算符 来进行数据的输入和输出操作。流提供了一种便捷的方式来进行输入输出操作使得程序可以与用户进行交互同时还可以读写文件和其他外部设备 。
一、C流的概念
1.C流的体系结构 C 的流体系结构是由标准库提供的主要包括输入流和输出流两个方面。流可以与各种数据源进行交互包括标准输入输出设备如键盘和屏幕、文件、字符串等。下面是 C 流的主要组成部分 输入流istream输入流用于从外部数据源如键盘、文件中读取数据到程序中。istream 是输入流的基类它提供了从流中读取数据的接口包括提取运算符 、getline() 等。 输出流ostream输出流用于将程序中的数据输出到外部数据源如屏幕、文件。ostream 是输出流的基类它提供了将数据写入流的接口包括插入运算符 、put() 等。 输入输出流iostreamiostream 是 C 中最常用的流类它同时继承了 istream 和 ostream提供了同时进行输入和输出操作的功能。 文件输入流ifstreamifstream 类继承自 istream用于从文件中读取数据。 文件输出流ofstreamofstream 类继承自 ostream用于向文件中写入数据。 字符串流stringstreamstringstream 类继承自 iostream用于在内存中创建一个字符串流可以像流一样进行输入输出操作但是数据存储在内存中的字符串中而不是外部设备或文件。
这些流类组成了 C 中的流体系结构为程序提供了灵活且强大的输入输出功能。通过这些流类程序可以与用户进行交互读写文件以及进行其他各种输入输出操作。
2.预定义流对象 C 中的预定义流对象是指在标准库中预先定义好的一些流对象用于简化输入输出操作。这些预定义流对象通常是 cin、cout、cerr 和 clog。 cincin 是标准输入流对象通常用于从标准输入设备如键盘读取数据。 coutcout 是标准输出流对象通常用于向标准输出设备如屏幕输出数据。 cerrcerr 是标准错误流对象用于向标准错误设备输出错误信息。它与 cout 相似但通常用于输出程序运行时的错误信息而不是普通的输出。 clogclog 是标准日志流对象用于输出程序的运行时信息。它与 cerr 类似但通常用于输出程序的日志信息而不是错误信息。
这些预定义流对象使得输入输出操作变得更加方便和简洁是 C 中常用的功能。通过这些流对象可以方便地进行标准输入输出、错误输出以及日志输出。
3.提取运算符和插入运算符 在 C 中提取运算符 和插入运算符 是用于输入和输出操作的重要运算符。
1. **提取运算符 ** - 提取运算符 用于从输入流中提取数据并将提取的数据存储到指定的变量中。 - 通常用于从标准输入流 cin 中读取用户输入的数据或者从文件流等输入流中读取数据。 - 语法istream_object variable; - 示例 int num; cin num; // 从标准输入流中读取一个整数并将其存储到变量 num 中 2. **插入运算符 ** - 插入运算符 用于将数据插入到输出流中以便将数据输出到指定的输出设备如屏幕、文件等。 - 通常用于向标准输出流 cout、标准错误流 cerr、日志流 clog 中输出数据或者向文件流等输出流中输出数据。 - 语法ostream_object value; - 示例 cout Hello, World!; // 将字符串 Hello, World! 输出到标准输出流 这些运算符使得输入输出操作变得简洁和直观是 C 中常用的功能。通过这些运算符可以方便地进行数据的输入和输出操作无论是从标准输入流读取用户输入还是向标准输出流输出结果。
4.有(无)格式输入/输出 C 中的有格式输入/输出formatted I/O和无格式输入/输出unformatted I/O是两种不同的输入输出操作方式。
1. **有格式输入/输出** - 有格式输入/输出是指根据指定的格式将数据进行输入和输出以便进行格式化显示或格式化读取。 - 有格式输出通常使用插入运算符 和流控制符如 setw()、setprecision() 等来指定输出的格式。 - 有格式输入通常使用提取运算符 和格式化输入函数如 getline()、scanf() 等来按照指定格式读取数据。 - 有格式输入/输出适用于需要按照特定格式输出或读取数据的场景如输出表格、格式化的日期时间等。
2. **无格式输入/输出** - 无格式输入/输出是指直接将数据按照原始形式进行输入和输出不进行任何格式化处理。 - 无格式输出通常使用插入运算符 将数据输出到流中不进行额外的格式化处理。 - 无格式输入通常使用提取运算符 将数据从流中提取出来不进行额外的格式化处理。 - 无格式输入/输出适用于简单的输入输出场景如读取和写入二进制文件、网络数据传输等。
5.操作符 C 中的操作符operators是用于执行特定操作的符号或关键字它们可用于执行算术、逻辑、位操作等。
二、输入/输出的格式控制
1.默认的输入/输出格式
1.默认的输入格式 C 中默认的输入格式通常是基于空白字符空格、制表符、换行符等来分隔不同的输入项。这意味着在使用输入操作符 时它会跳过输入流中的空白字符并将其视为分隔符从而将输入流中的数据分割为不同的输入项。 如果我们使用以下代码从输入流中读取数据
int a, b, c;
cin a b c;则 cin 会依次将 10、20 和 30 读取到变量 a、b 和 c 中。 另外cin 也会将换行符回车视为输入的结束符号因此如果用户输入完数据后按下回车键则输入操作会停止。
2.默认的输出格式 C 中默认的输出格式通常是将数据按照其类型进行格式化输出并使用空格将不同的输出项分隔开来。对于基本数据类型如整数、浮点数、字符等默认的输出格式是右对齐并且小数点后保留 6 位有效数字。
2.格式标识与格式控制
1.setf 设置某个域中的标志设置前先讲改域中的所有标识清除
实例代码如下 cout.setf(ios_base::left,ios_base::adjustfield); 2.setf函数返回设置前的格式控制标志。 cout.setf(ios_base::showpos); 3.unsetf此函数用于清除制定标志或域 coutsetiosflags(ios_base::showpos); 3.输入/输出宽度的设置 在 C 中您可以使用 setw() 和 setfill()函数来设置输入/输出的宽度。这两个函数通常与输出流对象一起使用例如 cout、cin 等。
1. setw() 函数 用于设置输出的字段宽度。设置后后续的输出项将按照指定的宽度进行输出。如果输出项的长度小于指定的宽度则用填充字符默认为空格填充直到达到指定的宽度。
#include iostream
#include iomanipusing namespace std;int main() {cout setw(10) Hello; // 输出宽度为 10 的字符串不足部分用空格填充return 0;
}输出结果为 Hello 2. setfill() 函数 用于设置填充字符。设置后setw() 函数所指定的宽度不足时将使用指定的填充字符进行填充。
#include iostream
#include iomanipusing namespace std;int main() {cout setw(10) setfill(-) Hello; // 输出宽度为 10填充字符为 - 的字符串return 0;
}-----Hello 4.浮点数输出方式的控制 在 C 中您可以使用 setprecision() 和 fixed 控制符来控制浮点数的输出方式包括小数位数和输出格式。
1. fixed:浮点数按定点格式输出。
2. secientific:浮点数按照指数格式输出
5.输出精度的控制 输入/输出精度是针对浮点数控制的其实际含义与浮点输出方式有关。如果是浮点类型精度指的是有效位数。如果是指数格式精度的含义是小数位数。精度的设置默认为6.setprecision函数设置精度。
6.对齐方式的控制
1.left左对齐
2.right右对齐
3.internal设定的宽度内右对齐输出但是如果有符号符号位于最左端。
7.小数点处理方式的控制 这个设置只影响浮点格式输出的浮点数据。初始状态下不输出小数点以及小数点后的无效0设置之后小数点点处理方式一直有效知道再次设置小数点处理方式为止。 有关操作符如下。 showpoint:输出小数点以及后面的0 noshowpoint:不输出无效的0 实例代码如下
#include iostream
#include iomanipusing namespace std;int main() {float f 123;coutrightshowpointsetprecision(4)setw(20)fendl;//coutnoshowpointsetw(20)fendl;//设置字符A填充不足的位数return 0;
}控制台输出信息如下 123.0 123 8.填充字符的控制 当设置填充宽度的时候小于填充宽度的时候默认使用空格填充我们也可以调用setFill修改默认的填充字符。示例代码如下
#include iostream
#include iomanipusing namespace std;int main() {float f 123;coutshowpointsetprecision(4)setw(10)fendl;//coutsetfill(A)noshowpointsetw(10)fendl;//设置字符A填充不足的位数return 0;
}
9.换行运算符 endl:插入换行符号(\n)并强制写入缓存实现输出的回车换行。
10.输入/输出数状态的控制 默认情况下数据按照十进制输入/输出。如果要求按照八进制或者十六进制输出必须指明相应的数据形式hex为十六进制dec为十进制。 以下是一个 C 示例代码演示了八进制、十六进制和十进制的输入输出
#include iostream
#include iomanip // 用于控制输出格式using namespace std;int main() {int decimalNum;// 十进制输入cout Enter a decimal number: ;cin decimalNum;// 十六进制输出cout Hexadecimal representation: hex decimalNum endl;// 八进制输出cout Octal representation: oct decimalNum endl;// 十进制输出cout Decimal representation: dec decimalNum endl;return 0;
} 这段代码首先要求用户输入一个十进制数然后将其以十六进制、八进制和十进制形式输出。 三、文件流
1.文件流的建立 1.创建文件流对象的同事打开文件 ifstream inFile(output.txt); 2.先建立文件流对象再在合适的时候用函数open()打开文件 ifstream inFile; ... inFile.open(); 2.文件流的关闭 调用成员函数的close函数。
3.文件状态的判别
1.is_open()判断是否正确打开
2.good:文件操作是否成功
3.fail():和good相反
4.bad():是否非法操作
5.eof():是否达到文件尾部。
4.文件流的定位
1.ios_base::beg 相对于文件首
2.ios_base::cur 相对于文件当前位置
3.ios_base::end 相对于文件尾部
5.有格式输入/输出 基本与标准输入/输出cin和cout基本相同。
6.无格式输入/输出 基本与标准输入/输出cin和cout基本相同。