2014-01-09 3 views
1

C++에서 텍스트를 편집하는 프로그램을 만드는 데 약간의 문제가 있습니다. 나는 여전히 프로그래밍의 시작 단계에 있음을 명심하십시오. 필자가해야 할 일은 다음과 같습니다.C++의 간단한 텍스트 편집 프로그램

일부 텍스트는 텍스트 파일 F에 저장됩니다. 파일 F를 기반으로 프로그램 편집기를 작성해야합니다. 키보드의 명령과 데이터는 FF 파일을 생성합니다. 프로그램 편집기는 다음 명령을 인식하고 처리해야합니다.

AN - n 번째 행 다음에 텍스트를 삽입하십시오.

IN - n 번째 행 앞에 텍스트를 삽입합니다.

CM, N - m 번째부터 n 번째까지 행의 대체;

DM, N - m 번째부터 n 번째까지 행을 삭제한다.

편집의 끝;

여기서 m과 n은 파일 F의 행 수입니다. 명령은 행에 하나씩 기록되며 메뉴로 만들어집니다.

이것은 프로그램입니다. 웹에서 텍스트 편집에 대해 많은 연구를했으며 일부 텍스트 편집 프로그램의 소스 코드가 있지만 프로그래밍 시작 단계에 있으며 아직 이해하기 어려운 소스 코드를 발견합니다.

텍스트 파일 F에 텍스트를 수동으로 입력해야하며 텍스트를 추가하는 방법에 대한 추가 옵션을 메뉴에 추가해야합니다.

다른 것은 명령에 관한 것입니다. 행을 삽입, 대체 및 삭제할 수 있도록 텍스트의 다른 행을 찾고 사용하는 방법은 무엇입니까?

글쎄요. 시간이 있다면 저를 도와주십시오. 정말이 프로그램이 어떻게 그렇게 복잡한 방식으로 이루어져야하는지 알 필요가 있기 때문에 제가 배울 수있는 가치있는 것들이 있다고 생각합니다. 미리 감사드립니다!

+2

팁 정말 유용의 문서를 검색하는 법을 배워야 : 읽기에 대한 ['표준 : vector'] (http://en.cppreference.com/w/cpp/container/vector) 및 ['std :: string'] (http://en.cppreference.com/w/cpp/string/basic_string)을 참조하십시오. [C++ 입출력 라이브러리] (http://en.cppreference.com/w/cpp/io)에 대해서도 읽어보십시오. 아주 간단한 줄 기반 텍스트 편집기로 충분합니다. –

+0

글쎄, 당신의 작업은 사소한 일이 될 수있다. 그래픽이 아닌 텍스트 작성은 다루기가 매우 어려울 수 있습니다. – IssamTP

+0

파일을 읽어서 string/line의 문자열 벡터에 넣으면 각 행이 이제 벡터의 색인이되고 "파일"을 편집하기 위해 벡터를 수정하면됩니다. 결국, 파일을 연결하고 파일에 씁니다. – DrakaSAN

답변

2

의사 코드, 당신은 당신이 documpentation : 당신은 구문 분석을 작성해야 할 것이다

(필요한 것이다 모든 실제 기능) 자신의 모든 vec.something 및 input.something을 찾아 낼 것이다 실제 벡터 또는 문자열 함수, 다른 이름으로, 당신은 설명서를 검색해야합니다.

열고 닫고 writeinfile도 다른 이름 IO 기능 (및 다른 파라미터), 다시

getuserinput도 변경 기본 입출력 함수 인 문서를 볼 수있다. 당신이 그것없이 당신의 숙제를 할 수있는 경우에 feeded 솔루션 숟가락, 알고리즘으로 생각하지입니다

나는이 당신에게이 작업을 수행하는 방법에 대한 아이디어를 제공하는 것입니다 쓰는 이유는, 그것을 사용하는 것보다 훨씬 낫습니다. 또한,이

vector<string> vec 
int n, m 
string input, output 

//Open the file 
open(your_file) 
//Store every line in a string in the vector 
while(input != EOF) 
{ 
    input = getalinefrom(file) 
    vec.add(input) 
} 

//You don t need the file for now, so close it 
close(file) 

//Create your 'menu', presuming text based, if graphical, well... 
do 
{ 
    //Get user choice 
    input = getuserinput() 

    //Every command is just a letter, so check it to know what to do 
    if(input.firstchar == 'A') 
    { 
     //Parse the input to get n 
     n = parse(input) 
     //Get the line to add 
     input = getuserinput() 
     //Add it before n 
     vec.addafter(n, input) 
    } 
    else if (input.firstchar == 'I') 
    { 
     //Parse the input to get n 
     n = parse(input) 
     //Get the line to add 
     input = getuserinput() 
     //Add it before n 
     vec.addbefore(n, input) 
    } 
    else if (input.firstchar == 'C') 
    { 
     //Well, I don t see what is substitution so I ll let you try 
    } 
    else if (input.firstchar == 'D') 
    { 
     //Get n and m 
     n = parse(input) 
     m = parse(input) 
     //Presuming n < m, you ll need to check for error 
     while(n < m) 
     { 
      vec.deleterow(n) 
      n = n + 1 
     } 
    } 
//Go out of the loop at E since it s the end of the app 
}while(input != "E"); 
//Concatene every line 
n = 0 
do 
{ 
    output = output + vec.contentofrow(n) 
}while(n < vec.length) 
//Open the file again, with correct flag it will erase it content 
open(file) 
//Write your new content 
writeinfile(file, output) 
//Close the file 
close(file) 
return 0;