ofstream在写入时怎么判断该字符串已经写入过而不重读写入
时间: 2024-05-29 07:09:43 浏览: 110
可以使用文件指针来判断该字符串是否已经写入过。
在写入字符串之前,先将文件指针移动到文件末尾,然后使用tellp()函数获取当前文件指针的位置,保存下来。之后再进行写入操作,每次写入之前,先将文件指针移动到之前保存的位置,然后使用getline()函数读取一行字符串,判断该字符串是否与要写入的字符串相同。如果相同,则说明该字符串已经写入过,不需要再次写入;如果不同,则将文件指针移动到文件末尾,然后将要写入的字符串写入文件中。
相关问题
ofstream在写入时怎么判断该字符串已经写入过而不重复写入
可以使用一个set容器来保存已经写入过的字符串,每次写入时先查看set中是否已经存在该字符串,如果不存在则写入并将该字符串加入set中,如果存在则跳过不写入。具体代码如下:
```c++
#include <iostream>
#include <fstream>
#include <set>
using namespace std;
int main() {
ofstream out("data.txt");
set<string> s;
string str;
while (cin >> str) {
if (s.count(str)) {
cout << "已经写入过 " << str << endl;
} else {
out << str << endl;
s.insert(str);
cout << "写入 " << str << endl;
}
}
out.close();
return 0;
}
```
ofstream不能写入
如果 `ofstream` 无法写入数据,可能有以下几个原因:
1. 文件不存在或路径错误:请确保路径正确并且文件存在。可以尝试使用绝对路径或相对路径。
2. 文件权限问题:请确认你拥有该文件的写入权限。
3. 文件被占用:如果文件正在被其他程序占用,则无法写入,请等待其他程序释放文件。
4. 写入操作失败:可能是由于某些原因,例如磁盘空间不足、文件系统损坏等,写入操作失败。
如果仍然无法解决问题,请提供更多详细信息,例如代码片段、错误消息等。
阅读全文