c++读定文件
阅读数:103 评论数:0
跳转到新版页面分类
C/C++
正文
一、概述
在标准 C++ 中,读取文件通常使用 <fstream>
头文件中的 std::ifstream
类。std::ifstream
提供了多种方法来读取文件内容,包括逐行读取、逐字符读取以及读取整个文件等。
二、逐行读取文件
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::ifstream inputFile("example.txt"); // 打开文件
if (!inputFile) {
std::cerr << "无法打开文件" << std::endl;
return 1;
}
std::string line;
while (std::getline(inputFile, line)) { // 逐行读取文件内容
std::cout << line << std::endl; // 输出每行内容
}
inputFile.close(); // 关闭文件
return 0;
}
三、逐字读取文件
#include <iostream>
#include <fstream>
int main() {
std::ifstream inputFile("example.txt"); // 打开文件
if (!inputFile) {
std::cerr << "无法打开文件" << std::endl;
return 1;
}
char ch;
while (inputFile.get(ch)) { // 逐字符读取文件内容
std::cout << ch; // 输出每个字符
}
inputFile.close(); // 关闭文件
return 0;
}
四、读取整个文件
#include <iostream>
#include <fstream>
#include <sstream>
int main() {
std::ifstream inputFile("example.txt"); // 打开文件
if (!inputFile) {
std::cerr << "无法打开文件" << std::endl;
return 1;
}
std::stringstream buffer;
buffer << inputFile.rdbuf(); // 将文件内容读入字符串流
std::string content = buffer.str(); // 获取字符串流中的内容
std::cout << content << std::endl; // 输出整个文件内容
inputFile.close(); // 关闭文件
return 0;
}
五、读取二进制文件
#include <iostream>
#include <fstream>
#include <vector>
int main() {
std::ifstream inputFile("example.bin", std::ios::binary); // 以二进制模式打开文件
if (!inputFile) {
std::cerr << "无法打开文件" << std::endl;
return 1;
}
// 获取文件大小
inputFile.seekg(0, std::ios::end);
std::streamsize size = inputFile.tellg();
inputFile.seekg(0, std::ios::beg);
// 创建缓冲区并读取文件内容
std::vector<char> buffer(size);
if (inputFile.read(buffer.data(), size)) {
// 处理二进制数据
std::cout << "读取了 " << size << " 字节的数据" << std::endl;
}
inputFile.close(); // 关闭文件
return 0;
}
六、以字节方式读取文件
#include <iostream>
#include <fstream>
#include <vector>
int main() {
// 打开文件,以二进制模式
std::ifstream inputFile("example.bin", std::ios::binary);
// 检查文件是否成功打开
if (!inputFile) {
std::cerr << "无法打开文件" << std::endl;
return 1;
}
// 移动文件指针到文件末尾,以确定文件大小
inputFile.seekg(0, std::ios::end);
std::streamsize size = inputFile.tellg();
inputFile.seekg(0, std::ios::beg);
// 创建缓冲区以存储文件内容
std::vector<char> buffer(size);
// 读取文件内容到缓冲区
if (inputFile.read(buffer.data(), size)) {
// 处理二进制数据
std::cout << "读取了 " << size << " 字节的数据" << std::endl;
// 示例:输出前10个字节的十六进制表示
for (std::streamsize i = 0; i < std::min(size, std::streamsize(10)); ++i) {
printf("%02X ", static_cast<unsigned char>(buffer[i]));
}
std::cout << std::endl;
} else {
std::cerr << "读取文件时出错" << std::endl;
}
// 关闭文件
inputFile.close();
return 0;
}
读取4字节转换类std::string
#include <iostream>
#include <fstream>
#include <string>
int main() {
// 打开文件,以二进制模式
std::ifstream inputFile("example.bin", std::ios::binary);
// 检查文件是否成功打开
if (!inputFile) {
std::cerr << "无法打开文件" << std::endl;
return 1;
}
// 创建一个字符数组用于存储读取的字节
char buffer[4];
// 读取4个字节
if (inputFile.read(buffer, 4)) {
// 将读取的字节转换为std::string
std::string result(buffer, 4);
// 输出结果
std::cout << "读取的字符串: " << result << std::endl;
} else {
std::cerr << "读取文件时出错或文件内容不足4个字节" << std::endl;
}
// 关闭文件
inputFile.close();
return 0;
}