2016-07-12 4 views
0

내 코드에 약간의 문제가 있습니다. 내 코드는., : 및;을 제외한 모든 영숫자가 아닌 문자를 제거해야합니다. 새 줄에 점으로 끝나는 줄을 정렬합니다. 그래서, 같은 뭔가 :점으로 끝나는 줄 정렬 (.)

First, some characters, legal and illegal:)(=8skf-=&. This should be on a separate line. This too. 

이 될 것입니다 :

First, some characters, legal and illegal: 8skf. 
This should be on a separate line. 
This too. 

지금, 비 영숫자 스트립 코드의 첫 번째 부분은 완벽하게 작동합니다. 정렬 부분은 포인트까지 작동합니다. 그래서, 내 코드에서 위의 라인은 실제로이된다 :

First, some characters, legal and illegal: 8skf. 
This should be on a separate line. This too. 

나는이 새로운 라인이며, 내 코드는 새로운 라인이되는 과정에서 그것을 읽을 수 없기 때문에이 것을 이해합니다. 코드는 다음과 같습니다, 초기 파일을 읽고 불법 문자를 스트립, 임시 파일에 기록하는 함수를 호출하여

int writeFinalv(string path) { 
    readTempFiles(path.c_str()); 
    string line; 
    string nline; 
    int start; 
    int lnth; 
    ifstream temp("temp.txt"); 
    ofstream final; 
    int length; 
    final.open(path.c_str(), ios::out | ios::trunc); 
    if(temp.is_open()) { 
     while(getline(temp, line)) { 
      length = line.length(); 
      for(int i = 0; i < length; i++) { 
       if(line[i] == '.') { 
        if(line[i+1] == ' ') { 
         nline = line.substr(0, (i+2)); 
        } 
        else { 
         nline = line.substr(0, (i+1)); 
        } 
        final << nline << "\n"; 
        start = line.find(nline); 
        lnth = nline.length(); 
        line.erase(start, lnth); 
       } 
       } 
      } 
     } 
    else { 
     error = true; 
    } 
    return 0; 
} 

내 코드 첫 번째 작품. 그런 다음, 임시 파일을 읽고, 점을 찾고 새 파일을 잘라내서 초기 파일에 씁니다. 미리 감사드립니다.

+0

정확한 질문은 무엇입니까? –

답변

1

line 문자열의 일부를 for 루프 안에 지우면 루프 색인이 무효화됩니다. ilength은 더 이상 for 루프를 계속 사용하기 위해 계속해서 사용할 수있는 값을 보유하지 않습니다.

실제로 문자열에서 지울 필요는 없습니다. 현재 시작 위치를 추적하여이를 substr 호출의 첫 번째 매개 변수로 사용할 수 있습니다.

+0

기본적으로 지우기 부분을 루프 밖으로 이동하거나 시작 위치를 추적 하시겠습니까? – Quantomic

+0

@CrAzYPiLoT :'erase' 호출을 없애고 현재 라인의 시작을 추적합니다. –

+0

이제 다소 효과가 있습니다. 지금 나는 얻는다 : '첫째로, 어떤 특성, 법적이고 및 불법 : 8skf. ' '첫째, 일부 문자는 법적 및 불법입니다 : 8skf. 이것은 별도의 줄에 있어야합니다. ' '첫째, 일부 문자는 법적 및 불법입니다 : 8skf. 이것은 별도의 줄에 있어야합니다. 이것 역시. ' 지우기 호출없이 모든 코드가있을 때 나는이 결과를 얻었습니다. – Quantomic

관련 문제