ofstream在写入时怎么判断该字符串已经写入过而不重复写入
时间: 2024-05-02 21:21:44 浏览: 84
可以使用一个容器(如set或unordered_set)来保存已经写入的字符串,每次写入新字符串时先判断该字符串是否已经存在于容器中,如果存在则不重复写入,如果不存在则将字符串写入文件并将其加入容器。以下是一个示例代码:
```c++
#include <iostream>
#include <fstream>
#include <unordered_set>
using namespace std;
int main() {
ofstream ofs("test.txt");
unordered_set<string> written_strings;
string s1 = "hello";
string s2 = "world";
string s3 = "hello";
if (written_strings.find(s1) == written_strings.end()) {
ofs << s1 << endl;
written_strings.insert(s1);
}
if (written_strings.find(s2) == written_strings.end()) {
ofs << s2 << endl;
written_strings.insert(s2);
}
if (written_strings.find(s3) == written_strings.end()) {
ofs << s3 << endl;
written_strings.insert(s3);
}
ofs.close();
return 0;
}
```
在上面的代码中,我们创建了一个unordered_set来保存已经写入的字符串。当写入新的字符串时,我们使用find函数在unordered_set中查找该字符串,如果返回的迭代器等于unordered_set的end(),说明该字符串不存在于unordered_set中,那么我们将该字符串写入文件并将其插入unordered_set中。这样就可以避免重复写入相同的字符串。
阅读全文