C++ Fstream 替换特定行?

2023-12-21

好吧,我不知道如何做到这一点。我设法找到了我想要更换的线路,但我不知道如何更换它。

假设一个名为 file.txt 的文件包含以下内容:

1
2
3
4
5

我想替换第 3 行,使其显示为 4 而不是 3。我该怎么做?

#include <Windows.h>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

fstream file;
string line;

int main(){
file.open("file.txt");
for(int i=0;i<2;i++){
getline(file,line);
}
getline(file,line);
//how can i replace?
}

假设您以读/写模式打开文件,您可以通过查找(包括查找当前位置)在读和写之间切换。但请注意,写入的字符会覆盖现有字符,即不会插入新字符。例如,这可能如下所示:

std::string line;
while (std::getline(file, line) && line != end) {
}
file. seekp(-std::ios::off_type(line.size()) - 1, std::ios_base::cur);
file << 'x';

即使您位于正确的位置,也需要寻求将流置于未绑定状态。尝试在不查找的情况下在读取和写入之间切换会导致未定义的行为。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ Fstream 替换特定行? 的相关文章

随机推荐