2016-11-17 1 views
-2

이 코드가 있는데 insert 문을 사용하여 각 점 다음에 새 행을 삽입하려고합니다. '삽입'호출에 대한 일치하는 멤버 함수가 없습니다라는 오류 메시지가 나타납니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?각 점 다음에 새 행 삽입 C++

#include<iostream> 
#include<string> 


using namespace std; 

int main() 
{ 
    string const inText1 = "I'm reading. "; 
    string const inText2 = "I like to read. "; 
    string const inText3 = "I'm gonna read that book. "; 
    string const inText4 = "She's reading. "; 
    string const inText5 = "He's reading. "; 
    string const inText6 = "READ. "; 
    string const inText7 = "Reading. "; 

    string inText8=inText1+inText2+inText3+inText4+inText5+inText6+inText7; 

    string::size_type dotpos = inText10.find("."); 
    if(dotpos != string::npos) 
     inText10.insert(dotpos, endl); 


    cout << inText10 << endl; 


    return 0; 
} 
+6

읽어? 코드에 정의되어 있지 않습니다. – UnholySheep

답변

0

inText10이 바로 텍스트 8이라고 가정하면 이것이 작동 코드입니다. 수행

변경 사항 :

  1. 이에 앞서 inText10 문자열을 찾을 수 없습니다. 따라서 해당 객체에 insert()를 수행하면 오류가 발생할 수 있습니다.
  2. 개행을 삽입 할 위치는 NOT입니다. 그 dotpos + 1
  3. 이 코드는 첫 번째 점을 찾은 후에 줄 바꿈을 추가합니다. 모든 도트 뒤에 줄 바꿈을 추가하려면 while 루프를 사용하여 모든 도트를 찾아 그 옆에 줄 바꿈 문자를 삽입하십시오.

    #include<iostream> 
    #include<string> 
    using namespace std; 
    
    int main() 
    { 
        string const inText1 = "I'm reading. "; 
        string const inText2 = "I like to read. "; 
        string const inText3 = "I'm gonna read that book. "; 
        string const inText4 = "She's reading. "; 
        string const inText5 = "He's reading. "; 
        string const inText6 = "READ. "; 
        string const inText7 = "Reading. "; 
    
        string inText8=inText1+inText2+inText3+inText4+inText5+inText6+inText7; 
    
        string::size_type dotpos = inText8.find("."); 
        if(dotpos != string::npos) 
        inText8.insert(dotpos + 1, "\n"); 
    
    
        cout << inText8 << endl; 
        return 0; 
    } 
    
0

당신이 문자열로 표준 : : endl의 삽입을 시도하기 때문에이 코드에서 정의되지 않은 많은 변수가 있지만, 기본적으로는 삽입 '' '에 대한 호출에 일치하는 멤버 함수'를받을 수 없습니다 . std :: endl은 어떤 타입의 char에도 캐스트 될 수 없으므로 이것을 할 수 없습니다.

, 문제가 해결 루프에서() \ n 모든 단일 점 후, 당신은 찾을 수 있습니까해야 삽입 할 경우, 그런데

inText10.insert(dotpos, endl); 

inText10.insert(dotpos, '\n'); 

를 교체하려면 왜냐하면 find()는 배열이 아닌 일치하는 단일 char 위치를 반환하기 때문입니다.

자세한 내용을 보려면하려면, 당신은 왜 표준 : ENDL을 삽입 할 수 없습니다,이`inText10` 무엇 std::endl description at cppreference