Написал программу которая должна удалять комментарии в файле исходного кода С++. Условия: // /* и */ не будут содержаться в самих комментариях, строках и символьных константах. Проблемы: '*/' сохраняется в файл. Код:
#include <iostream>
#include <fstream>
using namespace std;
const char *filename = "commandLine.h";
const char *filename2 = "commandLine_out.h";
int main()
{
ifstream in(filename, ios_base::in);
if(!in.is_open())
std::cout << "Input file not found!" << std::endl;
ofstream out(filename2);
if(!out.is_open())
std::cout << "Output file not found!" << std::endl;
string line;
bool inComment = false;
bool afterComment = false;
int i = 0;
while(getline(in, line))
{
i++;
line.append("\n");
// std::cout << inComment << std::endl;
if(afterComment == true)
{
// inComment = false;
afterComment = false;
}
if(line.find("//")!=std::string::npos)
inComment = true;
if(line.find("/*")!=std::string::npos)
inComment = true;
if(line.find("*/")!=std::string::npos)
inComment = false;
afterComment = true;
std::cout << i << " : " << inComment << "-" << afterComment << std::endl;
if((inComment == false)&&(afterComment == true))
{
out << line;
}
}
out.close();
in.close();
cout << "Hello world!" << endl;
return 0;
}