当前位置: 首页 > news >正文

网站建设经验总结大专学历怎么自考

网站建设经验总结,大专学历怎么自考,营销网站建设培训,企业网站建设工作总结文章目录 前言c IO 类简介1. iostream库iostream 类标准IO对象 2. fstream库fstream 类 3. stringstream库stringstream 类 格式化和控制错误处理 IO对象无拷贝或赋值IO条件状态主要的状态标志检查流状态控制流状态示例 管理输出缓冲主要操作示例 文件输入输出使用文件流对象示… 文章目录 前言c IO 类简介1. iostream库iostream 类标准IO对象 2. fstream库fstream 类 3. stringstream库stringstream 类 格式化和控制错误处理 IO对象无拷贝或赋值IO条件状态主要的状态标志检查流状态控制流状态示例 管理输出缓冲主要操作示例 文件输入输出使用文件流对象示例文件模式示例使用不同文件模式 string流1. std::stringstream基本用法示例 2. std::istringstream基本用法示例 3. std::ostringstream基本用法示例 使用场景 总结有用的话点个赞加个关注啊朋友 前言 简单分享一下c IO相关的一些知识点希望对大家有用 c IO 类简介 C的IO类是标准库的一部分主要用于输入和输出操作。这些类提供了读写数据的接口无论是从标准输入输出如键盘和屏幕还是从文件。以下是一些核心的C IO类及其主要功能 1. iostream库 iostream库包含用于标准输入输出操作的基本类。 iostream 类 istream用于输入操作的基类例如从键盘读取数据。ostream用于输出操作的基类如向屏幕输出数据。iostreamistream 和 ostream 的组合用于同时支持输入和输出。 标准IO对象 std::cin标准输入流对象与 istream 类关联通常用于从键盘读取输入。std::cout标准输出流对象与 ostream 类关联用于向屏幕输出数据。std::cerr标准错误流对象也与 ostream 类关联用于输出错误消息。默认情况下cerr 是非缓冲的即立即输出。std::clog类似于 cerr但通常用于记录日志。clog 是缓冲的所以输出可能不会立即出现。 2. fstream库 fstream库提供了文件读写功能。 fstream 类 ifstream用于从文件读取数据的输入流类。继承自 istream。ofstream用于向文件写入数据的输出流类。继承自 ostream。fstream结合了 ifstream 和 ofstream 的功能支持同时读写文件。继承自 iostream。 3. stringstream库 sstream库提供了字符串流功能即使用字符串进行输入输出操作。 stringstream 类 istringstream类似于 istream但用于从字符串读取数据。ostringstream类似于 ostream但用于向字符串写入数据。stringstream结合了 istringstream 和 ostringstream 的功能支持同时对字符串进行读写。 格式化和控制 C IO类还提供了丰富的格式化和控制功能例如设置小数点后的位数、设置宽度、填充字符等这些都是通过流操纵符如 std::setprecision、std::setw 等实现的。 错误处理 流对象内部维护着状态标志可以用来检测操作是否成功。例如 eof()检查是否达到文件末尾End Of File。fail()检查是否发生了逻辑错误如格式不匹配。bad()检查是否发生了严重错误如读写操作失败。 IO对象无拷贝或赋值 在C中IO对象如 std::cin, std::cout, std::ifstream, std::ofstream 等是不可拷贝和不可赋值的。这意味着不能使用拷贝构造函数或赋值操作符来复制或赋值这些对象。这样的设计是出于几个原因 唯一性每个IO对象都对应一个唯一的资源例如标准输入、标准输出或特定的文件。允许复制这些对象可能导致对同一资源的多个访问点这可能引发混乱和不一致性。 资源管理IO对象通常与底层资源如文件句柄紧密绑定。拷贝IO对象可能导致资源管理问题例如资源泄露或重复关闭文件。 状态共享如果IO对象可以被拷贝那么它们的状态如错误状态、文件指针位置等也将被共享。这种状态共享可能导致难以追踪的错误和不可预测的行为。 因此为了保证资源的正确管理和使用C标准库设计了IO对象为不可拷贝和不可赋值。如果需要传递这些对象通常的做法是使用引用或指针。例如可以将 std::ostream 对象作为引用参数传递给一个函数从而允许该函数向任何输出流如 std::cout 或文件输出流写入数据。 示例 void writeToStream(std::ostream stream) {stream Hello, World!; }int main() {writeToStream(std::cout); // 使用标准输出流std::ofstream file(example.txt);writeToStream(file); // 使用文件输出流// ... }IO条件状态 C标准库中的IO流如 std::istream、std::ostream、以及从它们派生出的类型比如 std::ifstream、std::ofstream维护了一个内部状态该状态表示流的当前健康状况。这个状态是通过一组状态标志来表示的可以用来检查在执行IO操作过程中是否发生了错误。 主要的状态标志 eofbit表示已经到达输入流的末尾End-Of-File。例如如果你试图从文件读取数据但已经到达文件末尾那么这个标志会被设置。 failbit表示一个IO操作失败但不是由于到达文件末尾或发生严重错误造成的。例如当试图读取一个整数但输入的是一个字母时这个标志会被设置。 badbit表示发生了严重错误如无法读取数据。这通常意味着流不能继续使用。 goodbit表示流处于良好状态没有错误发生。其值通常为0。 检查流状态 流对象提供了一些成员函数来检查这些状态标志 good()如果没有任何错误标志被设置即流处于良好状态则返回 true。eof()如果设置了 eofbit则返回 true。fail()如果设置了 failbit 或 badbit则返回 true。bad()如果设置了 badbit则返回 true。 控制流状态 clear()用于重置流的状态标志。你可以传递一个特定的标志位作为参数或者不传递参数来清除所有的错误标志。setstate()用于设置特定的状态标志。 示例 #include iostream #include fstreamint main() {std::ifstream file(example.txt);if (!file) {if (file.eof()) {std::cout Reached end of file. std::endl;}if (file.fail()) {std::cout IO operation failed. std::endl;}if (file.bad()) {std::cout Critical IO error. std::endl;}} else {// 文件读取或处理操作}file.close();return 0; }在这个示例中打开一个文件进行读取并检查文件流对象 file 是否处于良好状态。如果有错误发生就检查是哪种类型的错误并做出相应的反应。 管理输出缓冲 主要操作 刷新缓冲区将缓冲区的内容立即输出到目标设备。 使用 std::flush它会刷新关联的缓冲区但不输出任何额外内容。使用 std::endl它会插入换行符并刷新缓冲区。 同步与不同步I/O 使用 std::ios::sync_with_stdio(false)禁用C流和C标准I/O之间的同步可以提高程序性能但在混用C和C风格的I/O时需小心。 设置缓冲区大小 使用 rdbuf()-pubsetbuf(char* buffer, std::streamsize buffer_size) 来自定义流的缓冲区大小和位置。 示例 #include iostream #include fstreamint main() {// 禁用同步std::ios::sync_with_stdio(false);// 使用std::flush刷新缓冲区std::cout Hello, World! std::flush;// 使用std::endl插入换行并刷新缓冲区std::cout Another line std::endl;// 使用自定义缓冲区进行文件操作char buffer[1024];std::ofstream file(example.txt);file.rdbuf()-pubsetbuf(buffer, sizeof(buffer));// ... 文件写入操作 ...// 刷新并关闭文件file std::flush;file.close();return 0; }在这个示例中使用 std::flush 和 std::endl 来管理标准输出流的缓冲区。 文件输入输出 在C中文件输入输出是通过文件流对象实现的这些对象包含在标准库 fstream 中。主要包括三种类型的文件流对象std::ifstream 用于文件读取std::ofstream 用于文件写入以及 std::fstream 既可以用于读取也可以用于写入。 使用文件流对象 std::ifstream输入文件流 用于从文件中读取数据。你可以使用成员函数 open() 打开文件或在创建对象时指定文件名。使用 运算符或 getline() 函数从文件中读取数据。 std::ofstream输出文件流 用于向文件写入数据。同样可以使用 open() 方法或在构造函数中指定文件名来打开文件。使用 运算符向文件中写入数据。 std::fstream文件流 结合了 ifstream 和 ofstream 的功能可以同时用于读取和写入。打开文件时需要指定模式如读、写或两者。 示例 #include fstream #include iostream #include stringint main() {// 写入文件std::ofstream outFile(test.txt);outFile Hello, file! std::endl;outFile.close();// 读取文件std::ifstream inFile(test.txt);std::string line;while (getline(inFile, line)) {std::cout line std::endl;}inFile.close(); }文件模式 文件模式是指打开文件时指定的模式它决定了如何操作文件。常见的文件模式包括 输入std::ios::in文件以读取模式打开。输出std::ios::out文件以写入模式打开。如果文件已存在则其内容会被覆盖除非同时使用了 std::ios::app。二进制std::ios::binary以二进制模式打开文件。追加std::ios::app所有输出操作都在文件末尾进行不覆盖文件原有内容。同时读写std::ios::in | std::ios::out文件同时用于读取和写入。 示例使用不同文件模式 #include fstreamint main() {// 以写入模式打开文件如果文件存在则覆盖内容std::ofstream outFile(test.txt, std::ios::out);// 以追加模式打开文件写入的内容添加到文件末尾std::ofstream appendFile(test.txt, std::ios::app);// 以二进制和读写模式打开文件std::fstream binaryFile(test.bin, std::ios::in | std::ios::out | std::ios::binary); }string流 在C中字符串流String Stream提供了一种方便的方式来处理字符串数据。这些功能通过 sstream 头文件中的类实现包括 std::stringstream、std::istringstream 和 std::ostringstream。 1. std::stringstream std::stringstream 类结合了输入和输出功能可以用于同时读取和写入字符串。它通常用于格式化字符串、从字符串解析数据或者将多种数据类型组合成一个字符串。 基本用法 将数据写入字符串流。从字符串流中读取数据。作为动态字符串的构建器。 示例 #include sstream #include iostreamint main() {std::stringstream ss;ss Example 123 ; // 写入字符串和整数ss 45.67; // 继续写入浮点数std::string str ss.str(); // 获取整个字符串std::cout str std::endl; // 输出: Example 123 45.67int num;ss str num; // 从流中读取数据std::cout str , num std::endl; // 输出: Example, 123 }2. std::istringstream std::istringstream 类专门用于从字符串读取数据类似于 std::ifstream但操作的是字符串而非文件。 基本用法 从字符串解析数据。类似于使用 运算符从 std::cin 读取数据。 示例 #include sstream #include iostreamint main() {std::string data 42 Hello;std::istringstream iss(data);int num;std::string word;iss num word;std::cout Number: num , Word: word std::endl; // 输出: Number: 42, Word: Hello }3. std::ostringstream std::ostringstream 类专门用于向字符串写入数据类似于 std::ofstream但操作的是字符串而非文件。 基本用法 将多种数据格式化为字符串。类似于使用 运算符向 std::cout 写入数据。 示例 #include sstream #include iostreamint main() {std::ostringstream oss;oss Number: 42 , Word: Hello;std::string str oss.str(); // 获取构建的字符串std::cout str std::endl; // 输出: Number: 42, Word: Hello }使用场景 数据的串行化和反串行化。从复杂字符串中解析不同类型的数据。构建复杂的格式化字符串。用于单元测试中以字符串形式比较复杂对象的输出。 总结 IO这块还有很多可以深入研究的地方同步/异步阻塞/非阻塞等今天简单介绍一下后续补充详细的知识。 有用的话点个赞加个关注啊朋友
http://www.dnsts.com.cn/news/126233.html

相关文章:

  • 四平网站建设怎么选国外html模板网站
  • 网站优化公司价格如何计算阿里云和wordpress
  • 个人网站做捐赠发布违法吗会展设计专业
  • 深圳罗湖做网站58WordPress获取文件夹大小
  • 网站首页做301网站建设的物流
  • 网站开发技术支持与保障网站建设培训深圳
  • 专业的网站建设设计wordpress跟换域名
  • 做超市dm的网站企业做网站的注意事项
  • 网站不备案可以么网站百度突然不收录了
  • 菠菜网站模板外汇自动跟单网站开发
  • 有没有免费学编程的网站什么是软件开发平台
  • 招商网站建设推广鞍山制作网站
  • 注册网站什么要求怎么从建设部网站下载规范
  • 二维码制作网站链接中山网站建设优化
  • 网站ip地址查询eclipse 网站开发源码
  • 免费论文网站大全昆明网络公司收费标准
  • wap网站建设如何改造熊掌号短视频seo搜索优化
  • 广州做外贸网站深圳公司排名前50
  • 手表网网站如何做自己的网站系统
  • wordpress 子站点函数网页设计模板网站免费下载
  • 钓鱼网站建设中国美食网页设计模板
  • 网站内容建设情况公司网站手机版设计
  • eclipse做购物网站wordpress网店模板制作
  • 建筑网站夜里几点维护专业网站建设怎么样
  • wordpress如何添加网站地图有哪些公司建设网站
  • 家政服务技术支持东莞网站建设河北手机网站制作价格
  • 重庆制作网站怎么选四川网站网页设计
  • 重庆企业品牌网站建设wordpress单主题
  • 昆明做网站优化中国外协机械加工订单网
  • 网站手机版后台wordpress更换帝国