c++文件指针Demo代码
2021/8/23 17:05:53
本文主要是介绍c++文件指针Demo代码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include <iostream> #include <string> #include <vector> int main(){ std::string infile = "./infile.txt"; std::ifstream in(infile.c_str()); // 将string对象转为char* std::vector<long int> splitlist; // 存储分隔符位置 splitchar = "\n"; // 将换行符作为分隔符 if (! in.is_open()) { std::cerr << "Error: Invalid file " << infile << std::endl; return -1; } long int maxoffset = 0; // 如果文件没有以分隔符结尾则手动补一个文件结尾位置用 while(in){ maxoffset = in.tellg(); // tellg()报告当前指针位置 if(splitchar == in.get()){ splitlist.push_back(in.tellg()); // 保存文件中所有分隔符位置 } } if (*(splitlist.end()-1) < maxoffset){ splitlist.push_back(maxoffset+1); } in.close(); in.open(infile.c_str(), std::ios::in); // 实测第一次全部文件读完需要重新打开文件。可能重置in的状态可以不用重新打开 long int rowid = 10; // 以输出文件第十行为例 std::vector<long int>::iterator iter = splitlist.begin()+(rowid-1); // 找到第十行起始的分隔符在文件中的位置 in.seekg((*iter), std::ios::beg); // seekg()将文件指针跳转到指定位置 for(int i=(*iter); i<(*iter)+((*(iter+1))-(*iter))-1; i++){ // 从第十行起始的分隔符后开始,每次输出一个字符,直到输出完第十行的全部字符 std::cout << (char)in.get() << std::flush; } std::cout << std::endl; return 0; }
这篇关于c++文件指针Demo代码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28pyqt 怎么打包整个项目-icode9专业技术文章分享
- 2024-09-28laravel Commands 创建带有参数的 Artisan 命令的步骤和示例-icode9专业技术文章分享
- 2024-09-28antd怎么实现渲染tiff图片-icode9专业技术文章分享
- 2024-09-28英文半角中划线和中文全角的中划线有什么区别-icode9专业技术文章分享
- 2024-09-28nvm npm 和node 他们之间有什么关系-icode9专业技术文章分享
- 2024-09-28Node Version Manager (nvm)使用教程-icode9专业技术文章分享
- 2024-09-28nvm命令太慢,是什么原因-icode9专业技术文章分享
- 2024-09-28Kotlin 如何增加、删除和修改 MutableStateFlow 中的值。-icode9专业技术文章分享
- 2024-09-28Kotlin的stateFlow.update 写法介绍-icode9专业技术文章分享
- 2024-09-28kotlin 怎么获取当前时间格式-icode9专业技术文章分享