42Seoul/CPP Module 01

ex04

재윤 2023. 12. 1. 13:38
반응형
  • 여기는 c++의 파일 오픈과 닫기를 사용해보는 문제

 

  • C++에서는 파일을 열기 위해 fstream 헤더를 사용한며 infile은 ifstream, outfile은 ofstream을 사용한다.
#include <iostream>
#include <fstream>

int main(int argc, char **argv)
{
	if (argc != 4)
		return (std::cout << "argc is not four" << std::endl, 0);
	std::string s1 = argv[2];
	std::string s2 = argv[3];
	std::string inFileName = argv[1];
	std::string outFileName = inFileName + ".replace";
	int len1 = s1.length();
	int len2 = s2.length();
	if (inFileName.length() == 0 || len1 == 0 || len2 == 0)
		return (std::cout << "Arguments length is 0\\n",	0);
	std::ifstream infile;
	infile.open(inFileName.c_str());
	std::ofstream outfile;
	outfile.open(outFileName.c_str());
	if (infile.fail() || outfile.fail())
		return (std::cout << "Open Failed\\n", 0);

	std::string line;
	while (true)
	{
		std::getline(infile, line);
		
		size_t pos = 0;
		while (true)
		{
			pos = line.find(s1, pos);
			if (pos == std::string::npos)
			{
				break ;
			}
			line.erase(pos, len1);
			line.insert(pos, s2);
			pos += len2;
		}
		outfile << line;
		if (infile.eof())
			break ;
		outfile << std::endl;	
	}
	infile.close();
	outfile.close();
}
반응형

'42Seoul > CPP Module 01' 카테고리의 다른 글

ex06  (0) 2023.12.02
ex05(함수 포인터 배열)  (0) 2023.12.02
ex03  (0) 2023.12.01
ex02  (0) 2023.12.01
ex01(객체 포인터 배열 할당)  (0) 2023.12.01