다음은 텍스트 파일 parameters.in에서 두 개의 문자열을 대체하려고하는 코드입니다. 그러나 두 번째 문자열 만 어떤 이유로 대체됩니다. 대체는 ModifyParametersIn 함수를 사용하여 main()에서 발생합니다. 아무도 그 문제를 해결할 수있는 힌트를 줄 수 있습니까?텍스트 파일에서 여러 문자열을 바꾸는 방법은 무엇입니까? C++
void ModifyParametersIn(string search_string, string replace_string) {
string inbuf;
fstream input_file("parameters.in", ios::in);
ofstream output_file("parameters.out");
while (!input_file.eof()) {
getline(input_file, inbuf);
int spot = inbuf.find(search_string);
if(spot >= 0) {
string tmpstring = inbuf.substr(0,spot);
tmpstring += replace_string;
tmpstring += inbuf.substr(spot+search_string.length(), inbuf.length());
inbuf = tmpstring;
}
output_file << inbuf << endl;
int main() {
...
string search_string = "start_a0 = " + str_start_a0;
string replace_string ="start_a0 = " + str_middle_a0;
cout << search_string << endl;
ModifyParametersIn(search_string, replace_string);
search_string = "start_tanb = " + str_start_tanb;
replace_string = "start_tanb = " + str_middle_tanb;
ModifyParametersIn(search_string, replace_string);
cout << search_string<< endl;
return 0;
}
처음에는'while (! input_file.eof())'을하지 말고'while (getline (...)) '을하십시오. –
둘째, ['replace'] 대신 자신의 교체 코드 대신 http://en.cppreference.com/w/cpp/string/basic_string/replace)를 사용하십시오. –
왜 (당신의 첫 번째 코멘트와 관련해서) 설명 할 수 있습니까? – Gleb