所以基本上我在txt文件中有这个内容:
-
506; 25; ,thing1 thing2, thing3; 10, 15
我想将600; 12345678910; whatever1, whatever2, whatever3; 15, 60
更改为较短的字符串,例如,2
所以我运行代码,它确实改变了第2行中前两个12345678910
之间的字符串。
运行txt之后是这样的:
;...;
506; 25; ,thing1 thing2, thing3; 10, 15
600; 2; whatever1, whatever2, whatever3; 15, 60
但是,如果我更改为更大的字符串,则不会创建第三行。
; 15, 60
首先,我将文件每一行的内容上传到字符串向量while (j < storage_line.size())
{
size_t found = storage_line[j].find(string_to_add);
if (found != std::string::npos)
{
size_t found2 = storage_line[j].find(";"); //finds the position of the first ;
size_t found3 = storage_line[j].find(";", found2 + 1); //finds position of the second ;
storage_line[j].replace(found2 + 2, found3 - found2 - 2, string_to_add);
file2 << storage_line[j] << endl;
cout << storage_line[j] << endl;
j++;
}
else
{
file2 << storage_line[j] << endl;
cout << storage_line[j] << endl;
j++;
}
}
。
如果我storage_line
,它只显示我想要更改的字符串,并且不会创建第三行。
使用cout << storage_line[j] << endl;
,它会创建一个额外的行,如上所示。