QT 입문자로서 저도 QT를 공부하고 있습니다.
사실 제 글을 보는 것보다 QT Reference 사이트를 참조하는게 제일 좋습니다.
QT 5.15 DOC - doc.qt.io/qt-5/index.html
Qt 5.15
© 2021 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free
doc.qt.io
모두 영문으로 표기되어 있기에 나름 영어공부도 됩니다.
QFile 원본은 아래 링크 참조해주세요.
QFile - doc.qt.io/qt-5/qfile.html
QFile Class | Qt Core 5.15.3
QFile Class The QFile class provides an interface for reading from and writing to files. More... Note: All functions in this class are reentrant. Public Types Public Functions QFile(const QString &name, QObject *parent) QFile(QObject *parent) QFile(const Q
doc.qt.io
#include <QFile> 헤더에 속해있습니다.
QFile은 파일을 열어서 텍스트나 파일등을 읽고 쓰는 작업을 합니다.
이를 처리할 때 QFile을 사용할 수도 있지만 QTextStream 과 QDataStream 을 사용하기도 합니다.
보통 생성자에서 파일 이름을 받아 파일을 열지만 이를 setFileName() 함수로 중간에 변경할 수 있습니다.
OS 환경에 상관없이 경로를 표기할 때 ' / ' 를 사용합니다.
C에서 파일스트림 함수를 다루는 것과 비슷하게 open(), close(), flush(), exists(), remove() 등의 함수도 있습니다.
아래 코드는 텍스트 파일을 한 줄씩 읽습니다.
QFile 인스턴스 생성하여 in.txt 파일을 지정합니다.
Read 권한으로 파일을 열고
파일의 끝이 될 때까지 한 줄씩 읽습니다.
process_line(line); 이 무슨 기능인가 궁금해서 구글링을 해봤는데, 메소드는 아니고 Just Example 라네요.
QByteArray는 C언어의 8비트 const char* '\0' 종료 문자열을 편리하게 사용하기 위해 만든 클래스라네요.
추후에 다뤄보도록 하겠습니다.
C에서 시스템 콜을 사용하지 않고 Stream을 사용하여 파일을 처리할 수 있듯이
스트림을 통해 파일을 읽어올 수 있습니다.
QTextStream 은 8비트 문자를 16 비트 유니코드인 QString 으로 변환해주는 역할을 한다고 하네요.
이는 사용자 시스템이 16비트 인코딩을 많이 사용하기 때문입니다. (대부분의 유닉스가 UTF-8 을 기반으로 한다.)
그러므로 8비트 문자를 16비트 문자로 사용하기 위해 QTextStream으로 열고 QString 으로 받습니다.
이를 제외하고는 위 코드와 크게 다르지 않네요.
QByteArray - 8비트 문자
QString - 16비트 문자
8비트 아스키 코드로 표현할 수 있는 문자보다 16비트 유니코드로 표현할 수 있는 문자가 많아서
번거로워도 이렇게 변환해주는 것 같습니다.
QString에 대해서도 추후에 알아보겠습니다.
파일에 쓰기를 위해선 open flag를 QIODevice::WriteOnly 로 설정하고
오버로딩된 << 연산자를 사용합니다.
파일 읽기는 반대로 >> 연산자를 사용합니다.
QTextStream 으로 file을 열고 << 연산자를 사용합니다.
cout 과 비슷하게 사용하고 이 값은 out.txt에 저장됩니다.
'QT > QT Reference' 카테고리의 다른 글
QT Reference 2 - QByteArray (0) | 2021.05.10 |
---|