HOWTO · C++
C++에서 파일에 텍스트를 추가하는 방법
이 기사에서는 C++로 파일에 텍스트를 추가하는 방법을 설명합니다.
이 페이지의 내용
파일 작업은 프로그래밍에서 흔한 작업이며, C++는 파일 조작을 위한 강력한 도구를 제공합니다. 흔한 연산 중 하나는 기존 파일에 텍스트를 추가하는 것입니다.
이 기사에서는 이를 수행하는 여러 가지 방법을 살펴보고, 과정을 철저히 이해하는 데 도움이 되는 코드 예제와 설명을 제공합니다.
ofstream 및 std::ios::app 플래그를 사용하여 파일에 텍스트 추가
C++에서 std::ofstream 클래스는 Standard Template Library(STL)의 일부이며 파일에 쓰는 데 사용됩니다. 텍스트 파일을 만들거나, 열거나, 쓰거나, 데이터를 추가하려는 경우에 탁월한 선택입니다.
또한 std::ios::app 플래그는 std::ofstream의 중요한 구성 요소입니다. 이 플래그를 사용하면 스트림이 파일을 추가 모드로 열도록 지시하는데, 이는 스트림에 쓰는 모든 데이터가 기존 파일 내용의 끝에 추가됨을 의미합니다.
파일이 존재하지 않으면 파일이 생성됩니다.
이제 std::ofstream에 std::ios::app 플래그를 사용하여 C++에서 파일에 텍스트를 추가하려면 다음 단계를 따르세요:
-
필요한 헤더 파일을 포함합니다:
#include <fstream> #include <iostream> -
std::ofstream객체를 사용하여 추가 모드(std::ios::app)로 파일을 엽니다. -
<<연산자를 사용하여 파일에 추가하려는 텍스트를 씁니다. -
완료되면 파일을 닫습니다.
예시는 다음과 같습니다:
#include <fstream>
#include <iostream>
int main() {
// File path
std::string filePath = "example.txt";
// Open the file in append mode
std::ofstream outputFile(filePath, std::ios::app);
if (!outputFile) {
std::cerr << "Failed to open the file for appending." << std::endl;
return 1;
}
// Text to append to the file
std::string textToAppend = "This is some appended text.";
// Append the text to the file
outputFile << textToAppend << std::endl;
// Close the file
outputFile.close();
std::cout << "Text appended to the file successfully." << std::endl;
return 0;
}
이 예제에서는 먼저 std::ios::app를 사용하여 example.txt 파일을 추가 모드로 열었습니다. 파일이 존재하지 않으면 파일이 생성됩니다.
그런 다음 << 연산자를 사용하여 지정된 텍스트를 파일에 추가하고, 마지막으로 파일을 닫았습니다.
파일을 열 수 없는 경우를 처리할 수 있도록, 예제에서와 같이 파일을 열 때 오류를 확인하세요.
fstream 및 std::ios::app 플래그를 사용하여 파일에 텍스트 추가
ofstream 접근 방식과 마찬가지로, std::fstream에 std::ios::app 플래그를 사용하여 읽기와 추가를 모두 할 수 있도록 파일을 열 수 있습니다.
C++에서 std::fstream 클래스는 Standard Template Library(STL)의 일부이며 파일 입력 및 출력에 사용됩니다. 텍스트 파일을 만들거나, 열거나, 쓰거나, 데이터를 추가해야 하는 경우에도 탁월한 선택입니다.
std::ios::app 플래그는 std::fstream의 필수 구성 요소입니다. 이 플래그를 적용하면 스트림이 파일을 추가 모드로 열도록 지시합니다.
이 모드에서는 스트림에 쓰인 모든 데이터가 기존 파일 내용의 끝에 추가됩니다. 파일이 존재하지 않으면 파일이 생성됩니다.
std::fstream에 std::ios::app 플래그를 사용하여 C++에서 파일에 텍스트를 추가하려면 다음 단계를 따르세요:
-
필요한 헤더를 포함합니다:
#include <fstream> #include <iostream> #include <string> -
std::fstream객체를 만들고 추가 모드로 파일을 엽니다:std::fstream file("example.txt", std::ios::app); -
if (!file.is_open())를 사용하여 파일이 성공적으로 열렸는지 확인합니다. -
file << textToAppend << std::endl;를 사용하여 파일에 텍스트를 추가합니다.textToAppend를 원하는 텍스트로 바꾸세요. -
완료되면
file.close();로 파일을 닫습니다.
전체 예시는 다음과 같습니다:
#include <fstream>
#include <iostream>
#include <string>
int main() {
// Open the file in append mode
std::fstream file("example.txt", std::ios::app);
// Check if the file is opened successfully
if (!file.is_open()) {
std::cerr << "Error opening the file!" << std::endl;
return 1; // Exit with an error code
}
// Text to append
std::string textToAppend = "This is the text to append.";
// Append text to the file
file << textToAppend << std::endl;
// Close the file
file.close();
return 0;
}
이 코드는 파일을 추가 모드로 열고, 지정된 텍스트를 추가한 다음, 파일을 닫습니다.
파일이 존재하지 않으면 파일이 생성됩니다. 파일이 존재하면 기존 내용을 덮어쓰지 않고 새 내용이 파일 끝에 추가됩니다.
플래그 없이 std::ofstream를 사용하여 파일에 텍스트 추가
이제 새 파일을 만들거나 기존 내용을 덮어쓰려면 플래그 없이 std::ofstream를 사용할 수 있습니다. 파일이 이미 존재하면, 이 방법은 사실상 파일 내용을 지우고 빈 상태에서 시작합니다.
기본 예시는 다음과 같습니다:
#include <fstream>
#include <iostream>
int main() {
// Creating a new file or overwriting existing content
std::ofstream outputFile("example.txt");
// Checking if the file is successfully opened
if (outputFile.is_open()) {
outputFile << "This will overwrite existing content.\n";
outputFile.close(); // Always close the file when done
} else {
std::cerr << "Unable to open the file.\n";
}
return 0;
}
이 코드 스니펫에서는 먼저 outputFile이라는 이름의 std::ofstream 객체를 만들고 작업할 파일(이 경우 example.txt)을 지정했습니다.
std::fstream 및 write() 메서드를 사용하여 파일에 텍스트 추가
이 문제를 해결하는 또 다른 방법은 이전 예제에서 했던 것처럼 << 연산자를 사용하는 대신 fstream 객체에서 write 멤버 함수를 명시적으로 호출하는 것입니다. 이 방법은 대부분의 시나리오에서 더 빠르지만 엄격한 성능 요구 사항이 있는 경우 항상 코드를 프로파일링하고 타이밍을 비교하세요.
#include <fstream>
#include <iostream>
using std::cout;
using std::endl;
using std::fstream;
using std::string;
int main() {
string text("Some huge text to be appended");
string filename("tmp.txt");
fstream file;
file.open(filename, std::ios_base::app);
if (file.is_open()) file.write(text.data(), text.size());
cout << "Done!" << endl;
return EXIT_SUCCESS;
}
위의 코드에서는 fstream 객체의 open() 메서드를 사용하여 파일을 추가 모드(std::ios_base::app)로 열었습니다. 또한 file.is_open()을 사용하여 파일이 성공적으로 열렸는지 확인했습니다.
그런 다음 write() 메서드를 사용하여 텍스트를 이진 데이터로 파일에 썼습니다. 보시다시피, 이 메서드는 데이터에 대한 포인터와 쓸 바이트 수라는 두 가지 인수를 받습니다.
마지막으로, 연산이 완료되었음을 나타내기 위해 Done!를 출력했습니다.
결론
이 기사에서 제시된 각 방법은 파일에 텍스트를 추가하는 고유한 접근 방식을 제공합니다. 어떤 방법을 선택할지는 구체적인 요구 사항과 코딩 스타일에 따라 다릅니다.