C++ 文件读写,清空文件内容

在C++中,您可以使用文件流(fstream)来进行文件的读写操作,以及清空文件内容。下面是使用C++进行文件读写和清空文件内容的示例代码:

#include <iostream>
#include <fstream>

using namespace std;

int main() {
	// 打开文件进行写入操作
	ofstream outFile("example.txt");
	if (!outFile) {
		cerr << "无法打开文件!" << endl;
		return 1;
	}
	
	// 向文件中写入内容
	outFile << "这是第一行内容" << endl;
	outFile << "这是第二行内容" << endl;
	outFile << "这是第三行内容" << endl;
	
	// 关闭文件
	outFile.close();
	
	// 打开文件进行读取操作
	ifstream inFile("example.txt");
	if (!inFile) {
		cerr << "无法打开文件!" << endl;
		return 1;
	}
	
	// 读取文件中的内容并打印到控制台
	string line;
	while (getline(inFile, line)) {
		cout << line << endl;
	}
	
	// 关闭文件
	inFile.close();
	
	// 清空文件内容
	ofstream truncateFile("example.txt", ios::trunc);
	truncateFile.close();
	
	// 重新打开文件进行读取操作,确认文件内容已被清空
	ifstream verifyFile("example.txt");
	if (!verifyFile) {
		cerr << "无法打开文件!" << endl;
		return 1;
	}
	
	// 读取文件中的内容并打印到控制台
	while (getline(verifyFile, line)) {
		cout << line << endl;
	}
	
	// 关闭文件
	verifyFile.close();
	return 0;
}

在上面的示例中,首先我们使用ofstream打开文件example.txt,并将一些内容写入文件中。然后,我们使用ifstream重新打开该文件,并读取文件中的内容并打印到控制台。

接下来,我们再次使用ofstream打开文件,但这次使用ios::trunc参数,这将清空文件内容。然后我们重新打开文件并读取其中的内容,确认文件已被清空。

请注意,在清空文件内容时,ios::trunc参数会截断文件并将其大小设置为0。这意味着清空文件时会丢失文件中原有的所有数据。因此,请谨慎使用该操作,并确保您已备份文件内容(如果需要)。

以二进制数据流的方式读取文件内容并保存在char*中

储存的时候会先用4字节存长度再存内容

void readFile(const std::string& filename, char*& buffer, int& len)
{
    std::ifstream file(filename, std::ios::binary);
    if (!file.is_open()) {
        printf("[client] file open fail\n");
        len = -1;
        return;
    }
    std::vector<char> data(std::istreambuf_iterator<char>(file), {});
    file.close();

    size_t datalen = data.size();
    printf("[client] readfile data length: %d\n", datalen);
    printf("[client] data:[%s]\n", data.data());
    len = datalen + 4;

    buffer = new char[len + 1];
    memset(buffer, 0, len + 1);
    uint32_t netlen = htonl(datalen);
    memcpy(buffer, &netlen, 4);
    memcpy(buffer + 4, data.data(), datalen);
    printf("[client] filebuffer:[%s]\n", buffer);
}

以二进制流的方式写入文件

#include <iostream>
#include <fstream>

void writeBinaryFile(const char* data, std::size_t dataSize, const std::string& filename) {
    std::ofstream file(filename, std::ios::out | std::ios::binary); // 以二进制方式打开文件
    if (file.is_open()) {
        file.write(data, dataSize); // 将二进制数据写入文件
        file.close(); // 关闭文件
        std::cout << "Binary data has been written to the file." << std::endl;
    } else {
        std::cerr << "Failed to open file for writing." << std::endl;
    }
}

int main() {
    const char* binaryData = "\x01\x02\x03\x04\x05"; // 二进制数据
    std::size_t dataSize = 5; // 数据大小
    std::string filename = "output.bin"; // 输出文件名

    writeBinaryFile(binaryData, dataSize, filename);

    return 0;
}

在这个示例中,writeBinaryFile函数接受一个char*指针(指向二进制数据的起始位置),数据大小,以及输出文件的文件名。函数使用std::ofstream以二进制方式打开文件,并使用write函数将二进制数据写入文件。

请注意,在实际使用中,你需要确保提供的data指针指向足够大的内存块,以包含指定大小的二进制数据。同时,确保在使用完毕后,释放相关内存,避免内存泄漏。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值