Gegründet 2006

qfile write 예제

페인팅이 <를 지원하지 않는 경우 컴파일러 오류가 발생합니다. 사용자 지정 형식에 스트리밍 연산자제공의 또 다른 이점은 이러한 형식의 값을 QVariants로 저장할 수 있다는 것입니다. 이 작품은 11장(292쪽)에 설명된 대로 사전에 qRegisterMetaTypeStreamOperators()를 사용하여 형식을 등록하는 것을 제공합니다. QDataStream은 operator<>()를 사용하여 다시 읽을 수 있다는 점에서 유사합니다. 자세한 내용은 수업 설명서를 참조하십시오. 한 번에 파일을 읽거나 쓰려면 QDataStream을 사용하지 않고 대신 QIODevice의 write() 및 readAll() 함수를 사용할 수 있습니다. 예: 읽기에 사용하는 QDataStream 버전은 쓰기에 사용한 버전과 동일합니다. 항상 이러한 경우여야 합니다. 버전 번호를 하드 코딩하면 응용 프로그램이 항상 데이터를 읽고 쓸 수 있습니다(Qt 4.3 또는 이후 Qt 버전으로 컴파일된 경우). 매직넘버는 파일 형식을 고유하게 식별하는 상수입니다. 이 방법을 사용하면 어떤 일이 발생하든 항상 최신 버전의 QDataStream을 사용하여 데이터를 작성할 수 있습니다.

우리가 파일을 읽을 때, 우리는 스트림 버전을 읽을 수 있습니다 : 텍스트를 작성하려면, 우리는 왼쪽에 QTextStream을 가지고 오버로드된 operator<()와 오른쪽에 있는 다양한 데이터 유형 (QString 포함)을 사용할 수 있습니다 : QDataStream은 우리 자신의 사용자 정의 응용 프로그램 파일에 모두 유용합니다. 형식및표준바이진형식에대한것입니다. 기본 형식(예: quint16 또는 float)에서 스트리밍 연산자또는 readRawBytes() 및 writeRawBytes()를 사용하여 표준 바이너리 형식을 읽고 쓸 수 있습니다. QDataStream이 기본 C++ 데이터 형식을 읽고 쓰는 데 순수하게 사용되는 경우 setVersion()을 호출할 필요도 없습니다. 장치 클래스 외에도 Qt는 I/O 장치인 이진 데이터에 대한 QDataStream 및 텍스트용 QTextStream의 읽기 및 쓰기에 사용할 수 있는 두 개의 상위 수준의 스트림 클래스를 제공합니다. 이러한 클래스는 바이트 순서 및 텍스트 인코딩과 같은 문제를 처리하여 서로 다른 플랫폼이나 다른 국가에서 실행되는 Qt 응용 프로그램이 서로의 파일을 읽고 쓸 수 있도록 합니다. 따라서 Qt의 I/O 클래스는 해당 표준 C++ 클래스보다 훨씬 편리하므로 이러한 문제가 응용 프로그램 프로그래머에게 남습니다. I/O 장치 상태는 오류 코드를 반환합니다.

예를 들어 open()이 false를 반환하거나 읽기/쓰기 작업이 -1을 반환하는 경우 이 함수를 호출하여 작업이 실패한 이유를 알아낼 수 있습니다. QTextStream은 QIODevice, QByteArray 또는 QString에서 작동할 수 있습니다. QTextStream의 스트리밍 연산자, 당신은 편리하게 읽고 단어, 줄과 숫자를 쓸 수 있습니다. 페인팅을 출력하기 위해 두 개의 QStrings와 quint32를 출력합니다. 함수가 끝나면 스트림을 반환합니다. 이것은 우리가 출력 스트림 <<연산자의 체인을 사용할 수 있도록 하는 일반적인 C++ 관용구입니다. 예를 들어 readAll()이 호출되는 줄에서 입력 파일의 전체 내용을 QByteArray로 읽은 다음 출력 파일에 쓸 write() 함수로 전달됩니다. QByteArray에 있는 모든 데이터를 갖는 것은 항목별로 항목을 읽는 것보다 더 많은 메모리가 필요하지만 몇 가지 이점을 제공합니다. 예를 들어 qCompress() 및 qUncompress()를 사용하여 데이터를 압축및 압축 해제할 수 있습니다. qCompress() 및 qUncompress()를 사용하는 대신 메모리가 부족한 대안은 Qt 솔루션의 QtIOCompressor입니다. QtIOCompressor는 전체 파일을 메모리에 저장하지 않고 작성하는 스트림을 압축하고 읽는 스트림을 압축 해제합니다.

Comments are closed.