gpt4 book ai didi

c++ - 如何使用 string::replace 方法写入文件?

转载 作者:行者123 更新时间:2023-11-28 04:05:03 26 4
gpt4 key购买 nike

假设我有一个代码:

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
string line,wantedString,newString;
fstream subor("test.txt");
while (!subor.fail()) // read line from test.txt
{
getline(subor,line);
line.substr(line.find("?")+1);
wantedString=line.substr(line.find("?")+1); // will take everything after '?' character till
'\n'
}
cout<<"Enter new text to replace wantedString :";
getline(cin,newString);

// how to use string::replace() please ?
/I tried this but does not work
getline(subor,line);
line.replace(wantedString,string::npos,newString);
return 0;
}

在 test.txt 中只写了一行:

something?replace 

注意:文件中没有'\n' 编译器抛出的错误是:

    error: no matching function for call to 'std::__cxx11::basic_string<char>::replace(std::__cxx11::string&, const size_type&, std::__cxx11::string&)'

您能否回答工作代码并附上评论,解释为什么它像您那样做?

我在这里研究了 string::replace() 方法: http://www.cplusplus.com/reference/string/string/replace/

我的逻辑是使用 string::find() 作为要替换的字符串的起点吗?

最佳答案

Is my logic of using string::find() as a starting point for string to be replaced ?

是的,但随后您丢弃了 find 的迭代器/索引结果,转而获取 substring

替换不接受字符串。

它需要一个迭代器/索引。

因此只需将您从find 中得到的内容传递给replace。 (小心边缘情况!检查错误!阅读这两个函数的文档。)

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
fstream subor("test.txt");

string line;
while (getline(subor,line))
{
// Find the index of the character after the first '?'
const size_t wantedStringPos = line.find("?")+1;

// Prompt for a replacement string
cout << "Enter new text to replace wantedString: ";
string newString;
getline(cin,newString);

// Perform the replacement
line.replace(wantedStringPos, string::npos, newString);

// Now do something with `line`
// [TODO]
}
}

(我也修复了 an off-by-one error in your loop 。)

然后您需要将修改后的新字符串实际写回文件:文件不会自动更新,与您之前从中读取的数据拷贝同步。

关于c++ - 如何使用 string::replace 方法写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58880340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com