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代码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用
- 2025-01-03混合搜索:用LanceDB实现语义和关键词结合的搜索技术(应用于实际项目)
- 2025-01-03停止思考数据管道,开始构建数据平台:介绍Analytics Engineering Framework