C++로 파일에 쓰기
이 기사에서는 C++로 파일에 쓰는 방법에 대한 몇 가지 방법을 설명합니다.
fstream
및<<
연산자를 사용하여 파일에 쓰기
C++의 파일 I/O
는 스트림 조작 및 위치 지정을위한 여러 내장 메소드를 제공하는 fstream
클래스를 사용하여 처리됩니다. fstream
객체가 선언되면open
함수를 호출하여 파일 이름과 파일을 열 모드를 인수로 전달할 수 있습니다.
파일에 쓸 때 std::ios_base::out
모드를 지정합니다. 이는 쓰기 상태를위한 열기에 해당합니다. 다음으로, 파일이 스트림 객체, 즉if
조건에서is_open
메소드에 대한 호출과 성공적으로 연결되었는지 확인합니다. 이 시점에서 파일은<<
연산자를 사용하여 입력을 받고 필요에 따라 출력을 처리 할 준비가되었습니다.
else
블록은 오류 로깅 목적으로 활용되거나 더 나은 내결함성 프로그램 실행을 위해 오류 처리 루틴을 구현할 수 있습니다.
#include <fstream>
#include <iostream>
using std::cout;
using std::endl;
using std::fstream;
using std::ofstream;
using std::string;
int main() {
string filename("tmp.txt");
fstream file_out;
file_out.open(filename, std::ios_base::out);
if (!file_out.is_open()) {
cout << "failed to open " << filename << '\n';
} else {
file_out << "Some random text to write." << endl;
cout << "Done Writing!" << endl;
}
return EXIT_SUCCESS;
}
출력:
Done Writing!
fstream
및write
함수를 사용하여 파일에 쓰기
파일에 쓰는 또 다른 방법은fstream
객체에서 호출 할 수있는 내장write
함수입니다. write
함수는 문자열 포인터와 해당 주소에 저장된 데이터의 크기를받습니다. 결과적으로 주어진 데이터는 호출 스트림 개체와 관련된 파일에 삽입됩니다.
다음 코드 샘플에서는 open
함수 호출의 상태를 인쇄하여 최소한의 오류보고를 보여 주지만 실제 애플리케이션에서는 수동 페이지에 나와 있는 좀 더 강력한 예외 처리가 필요하다.
#include <fstream>
#include <iostream>
using std::cout;
using std::endl;
using std::fstream;
using std::ofstream;
using std::string;
int main() {
string text("Some huge text to write to\n");
string filename2("tmp2.txt");
fstream outfile;
outfile.open(filename2, std::ios_base::out);
if (!outfile.is_open()) {
cout << "failed to open " << filename2 << '\n';
} else {
outfile.write(text.data(), text.size());
cout << "Done Writing!" << endl;
}
return EXIT_SUCCESS;
}
출력:
Done Writing!
fwrite
함수를 사용하여 파일에 쓰기
또는 C 스타일 파일 I/O
에서 fwrite
함수를 사용하여 파일에 쓸 수 있습니다. fwrite
는void
포인터에서 데이터를 가져오고 프로그래머는 해당 주소에 저장된 항목 수와 각 항목의 크기를 전달해야합니다. 이 함수는 파일 스트림이FILE*
유형이어야하며fopen
함수를 호출하여 가져올 수 있습니다.
fwrite
는 작업이 성공하면 파일에 기록 된 항목 수를 반환합니다.
#include <fstream>
#include <iostream>
using std::cout;
using std::endl;
using std::ofstream;
using std::string;
int main() {
string text("Some huge text to write to\n");
string filename3("tmp3.txt");
FILE *o_file = fopen(filename3.c_str(), "w+");
if (o_file) {
fwrite(text.c_str(), 1, text.size(), o_file);
cout << "Done Writing!" << endl;
}
return EXIT_SUCCESS;
}
출력:
Done Writing!
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook