2016-11-02 4 views
0

나는 학교 프로젝트로서 문장을 강조하는 간단한 텍스트 편집기를 만들고있다. 지금은 텍스트 데이터를 저장하는 데 QStringList을 사용하지만 나중에 구문 강조 기능을 추가 할 것이고 데이터 저장 방법을 모르겠습니다.구문 강조 텍스트를 저장하는 방법은 무엇입니까?

하나의 옵션은 색상 정보를 저장하지 않고 코드 파서로부터 계속 가져 오는 것입니다. 그러나 이것은 아마도 매우 비효율적 일 것입니다.

더 좋은 생각은 텍스트의 모든 단어에 대한 색상을 저장하는 모든 줄마다 구조체 (색상 및 문자열 포함) 목록이 있어야한다는 것입니다. 그러나 나는 이것이 얼마나 빠를 것인지 너무 확신하지 못한다.

이러한 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

고맙습니다.

답변

-2

이 질문은 아마도 광범위합니다. 하지만 HTML 마크 업을 사용할 수도 있습니다. 브라우저에서 출력물을 열면 테스트 할 수있는 쉬운 방법을 제공합니다.

0

두 가지 방법을 제안합니다.

방법 1 : 특성이있는 텍스트 저장
데이터 구조를 구조체의 컨테이너로 변경하십시오.

struct Text_With_Properties 
{ 
    std::string text; 
    Properties text_properties; 
}; 

이 더 많은 공간을 차지할 수 있으며, 가장 효율적인 방법이 될 수 없습니다 : 구조는 텍스트 문자열과 스타일 변수가 포함됩니다.

방법 2 : 스타일 변경
많은 편집자가 다음 정상 폰트의 텍스트를 표시 스타일의 변화를 분석하는 또 다른 패스를 만들 것입니다에 대한 구문 분석합니다. 예를 들어, 두 번째 패스 중에 C++ 키워드가 발견되면 편집기는 스타일을 변경합니다.

이 방법은 더 이상 데이터 공간을 필요로하지 않지만 더 많은 처리 시간이 필요합니다.

관련 문제