2016-07-06 3 views
0

getline()이 열린 텍스트 파일에서 줄을 가져 오는 동안 창에 문자열을 추가하려고합니다. ncurses를 및 C++를 사용하여, 내가 뭐하는 거지 다음Ncurses 출력 함수는 const 데이터 만 허용합니다.

나는이 CONST 데이터 유형이 아닌 출력 뭔가 원하는 경우의 ncurses에서 어떻게해야하고 무엇을
string line;      //String to hold content of file and be printed 
ifstream file;     //Input file stream 
file.open(fileName)    //Opens file fileName (provided by function param) 

if(file.is_open()) {    //Enters if able to open file                                                 
    while(getline(file, line)) { //Runs until all lines in file are extracted via ifstream                                                 
    addstr(line);     //LINE THAT ISN'T WORKING                                                 
    refresh();                                                      
    }                                                         
    file.close();     //Done with the file                                                 
} 

그래서 제 질문은입니다 ...? 내가 본 in the documentation의 출력 함수 중 아무 것도 받아들이지 않는 문자가 but const input입니다.
이 프로그램은 파일 내용을 콘솔로 출력하는 경우 완벽하게 작동하므로 파일 읽기/열기 오류 또는 스트림과 관련된 문제를 제거 할 수 있습니다. 편집에 대한 정확한 오류는 다음과 같습니다.

error: cannot convert ‘std::__cxx11::string {aka std::__cxx11::basic_string}’ to ‘const char*’ for argument ‘2’ to ‘int waddnstr(WINDOW*, const char*, int)’ addstr(line);

추가 정보가 필요한 경우 알려주십시오.

편집 : 관련 문서에 대한 링크가 추가되었습니다.

답변

4

이 문제는 const과 아무 관련이 없으며, 직접적으로는 const이 아닙니다.

문제는 ncurses의 addstr()이 C 라이브러리 함수이며 null로 끝나는 C 스타일 문자열을 필요로한다는 것입니다.

인수로 C++ std::string 개체를 addstr()으로 전달하려고합니다. addstr() 그 자체가 C 라이브러리 함수라는 점을 감안할 때 이것은 잘 끝나지 않을 것입니다.

해결 방법은 std::stringc_str() 메서드를 사용하여 C 스타일 문자열을 얻는 것입니다.

addstr(line.c_str()); 
+0

나는 점점 가까워지고 있다고 생각합니다. 컴파일 오류가 해결되었지만 이제는 텍스트가 출력되지 않습니다. 더 많은 정보를 얻기 위해 뭔가를 할 수 있습니까? – Mazzone

+0

아니요,이 질문에 대한 답변입니다. 다른 질문을하고 싶다면 그것은 새로운 질문이 될 것입니다. 질문에 [mcve]를 입력하십시오. 이 질문에 표시된 코드는 [mcve]의 요구 사항을 충족시키지 못합니다. –