首页 > 编程语言 >C++流

C++流

时间:2023-08-09 16:46:46浏览次数:35  
标签:文件 ios C++ 字符串 entry ofstream

C++中流的概念

在程序设计中,数据输入输出(I/O)操作是必不可少的,C++语言的数据输入/输出操作时通过I/O流库来实现的。C++中把数据之间的传输操作称为流,流既可以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。
C++中的流主要有以下三种:

  • 标准I/O流:内存与标准输入输出设备之间信息的传递
  • 文件I/O流:内存与外文件之间信息的传递
  • 字符串I/O流:内存变量与表示字符串流的字符数组之间信息的传递

标准I/O流

这部分主要会用到cin,cout,常见的就是内存与显示器或键盘进行信息传递。

文件I/O流

C++文件流用于对文件进行处理,需要在源代码中包含头文件iofstreamfstream。对于文件流,C++定义了三种新的数据类型,ofstream, ifstream, fstream

数据类型 描述
ofstream 输出文件流,可创建文件并向文件写入信息
ifstream 输入文件流,可从文件中读取信息
fstream 文件,同时拥有ofstream, ifstream的功能

打开文件

使用open()函数打开文件,open()函数是ofstream, ifstream, ofstream对象的一个成员。

void open(const char *filename, ios::openmode mode);

第一个参数要指定打开文件的名称和位置,第二个参数要指定文件被打开的模式。

模式标志 描述
ios::app 追加模式,所有写入都将追加到文件的末尾
ios::ate 文件打开后定位到文件末尾
ios::in 文件打开用于读取
ios::out 文件打开用于写入
ios::trunc 如果文件已经存在,其内容将在打开文件之前被截断,即把文件的长度设为0

关闭文件

使用close()函数打开文件,close()函数是ofstream, ifstream, ofstream对象的一个成员。

void close();

字符串I/O流

要使用C++字符串I/O流,需要在头文件中包含sstream
对于字符串I/O流,C++也有三种新的数据类型,istringstreamostringstreamstringstream分别用来进行输入,输出,输入输出。一般情况下使用stringstream,因为字符串通常涉及频繁的输入输出。

字符串I/O流常用于数据形式的转换,以下示例代码从文件中一行行读取数据,并将数据保存到结构体entry中。

while (std::getline(inputFile, line))
    {                                 
        std::istringstream iss(line);
        DataEntry entry;
        iss >> entry.custNo >> entry.xCoord >> entry.yCoord >> entry.demand >> entry.readyTime >> entry.dueDate >> entry.serviceTime;
        data.push_back(entry);
    }

参考

C++ 流(stream)总结
C++文件和流|菜鸟教程
C++字符串流stringstream与string知识介绍与用法小结

标签:文件,ios,C++,字符串,entry,ofstream
From: https://www.cnblogs.com/hetailang/p/17617189.html

相关文章

  • C++/嵌入式八股学习-day2
    C++/嵌入式八股学习-day2C/C++手写atoi函数功能:将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回(返回转换后的整型数)。C++有哪几种构造函数ARMARMCPU上的地址转换......
  • c++中template的用法是什么?
    下文由ChatGPT生成在C++中,template是一种通用编程工具,用于创建通用的函数或类。通过使用模板,可以编写可以应用于不同数据类型的函数或类,从而实现代码的重用性和灵活性。template的使用方法如下:1.函数模板(FunctionTemplates)函数模板允许定义一个通用的函数,可以在不同数据类......
  • C++ vector 容器浅析
    C++vector容器浅析一、什么是vector?向量(Vector)是一个封装了动态大小数组的顺序容器(SequenceContainer)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。二、容器特性1.顺序序列顺序容器中的元素按照严格的线性顺......
  • C++11实用特性1
    1原始字面量有时候在输出一个路径字符串时,编译器会将其中的部分内容识别成转义字符进行输出,可以用R“xxx(原始字符串)xxx”其中()两边的字符串可以省略。原始字面量R可以直接表示字符串的实际含义,而不需要额外对字符串做转义或连接等操作。stringstr2=R"(D:\hello\world\test......
  • C++类和对象_多态
    虚函数被virtual修饰的成员函数被称为虚函数,虚函数的地址会被纳入类的虚函数表(virtualfunctiontable)。inline和virtual不会同时生效,用virtual修饰内联函数时,编译器会忽视函数的内联属性,此时函数不再是内联。虚函数一定不是内联函数。虚函数的重写子类继承父类,并有一个与父类......
  • C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽
    第8章函数探幽本章内容包括:内联函数。引用变量。如何按引用传递函数参数。默认参数。函数重载。函数模板。函数模板具体化。通过第7章,您了解到很多有关C++函数的知识,但需要学习的知识还很多。C++还提供许多新的函数特性,使之有别于C语言。新特性包括内联函数、......
  • 【C++第三方库】Windows下编译和使用websocketpp
    应用场景:使用C++开发一个支持websocket协议的服务进程,可与HTML5(浏览器js文件)通信。来实现替换基于firebreath框架的跨浏览器插件开发。当前,讲述websocketpp开源库的应用。目的是为了实现C++进程,支持websocket协议。但WebSocketpp是一个开源库,依赖于Boost和OpenSSL资源准......
  • c++ std::hash<std::string> 字符串哈希函数
    msvc采用了FNV-1a的哈希算法//众所周知std::string就是一个basic_string<char>template<class_Elem,class_Traits,class_Alloc>structhash<basic_string<_Elem,_Traits,_Alloc>>{_CXX17_DEPRECATE_ADAPTOR_TYPEDEFStypedefbasic_string<_......
  • C++STL 学习笔记
    C++STL学习笔记STL补充List链表list<int>mylist={}链表定义和初始化voidpush_front(constT& val)将val插入链表最前面voidpop_front()删除链表最前面的元素list.push_back() 增加一个新的元素在list的尾端list.pop_back() 删除list的......
  • C++ | 运算符重载
    运算符重载在类中的函数进行重载(成员函数)运算符重载用于重新定义运算符的作用,使用函数名称operatorOP作为函数名,其中OP为具体的运算符(如operator+)classTime{Timeoperator+(constTime&t);};Timea,b;Timec=a+b;在成员函数中重载的运算符,如+-等,默认左边......