C++ 从C+中删除注释+;一串

C++ 从C+中删除注释+;一串,c++,string,stream,C++,String,Stream,我正在尝试做一个项目,从以前编写的程序中删除注释。从理论上讲,我认为它应该可以工作,但由于某些原因,输出文件最终总是空的。。。请尽你所能帮助我。。。(顺便说一句,如果缩进太草率,复制和粘贴对我来说似乎从来都不合适) #包括 #包括 #包括 使用名称空间std; 无效注释_破坏者(ifstream&,ofstream&); 内部主(空){ 字符串文件启动; 字符串fileend; ifstream启动; 流端压力; 做{ cout文件启动; } while(start.fail()); cou

我正在尝试做一个项目,从以前编写的程序中删除注释。从理论上讲,我认为它应该可以工作,但由于某些原因,输出文件最终总是空的。。。请尽你所能帮助我。。。(顺便说一句,如果缩进太草率,复制和粘贴对我来说似乎从来都不合适)

#包括
#包括
#包括
使用名称空间std;
无效注释_破坏者(ifstream&,ofstream&);
内部主(空){
字符串文件启动;
字符串fileend;
ifstream启动;
流端压力;
做{
cout文件启动;
}  
while(start.fail());
cout>fileend;
start.open(filestart.c_str());
end.open(fileend.c_str());
注释/破坏者(开始、结束);
start.close();
end.close();
返回0;
}
// 
//函数的开始
//
无效注释\u销毁程序(ifstream&start、ofstream&end){
弦线;
bool-found=false;
int i=0;
而(!start.eof()){
getline(开始,行);

如果(line.find(“/*”)我认为您的条件是错误的。 如果未找到搜索项,则string.find返回std::string::npos。根据这一结果,表达式为-1

 if (line.find("/*")<line.length())
    found = true;

if(line.find(“/*”)以下部分是错误的。使用相等运算符代替为find赋值false

if (found)
    {
        if (line.find("*/")< line.length())
        found == false;
    }
}

因为注释真的很烦人,只是模糊了代码?首先,不要在(!someFile.eof())
时执行
,它将不会像您期望的那样工作。相反,请执行
while(std::getline(…)
。原因是,
eofbit
标志直到您尝试从文件末尾以外的位置读取后才设置。这意味着第一个循环将迭代一次到多次。您可能还需要考虑缩进,显示的代码中的缩进使您很难遵循。请记住,您始终可以编辑您的问题提示:问题很可能是因为SO上的编辑器无法很好地处理选项卡。line.find(/*)do…中也有一个非常大的逻辑错误,而
main
函数中的
循环。请记住,该文件尚未打开。该死的,它总是最微小的事情,导致最多的问题。谢谢!
if (found)
    {
        if (line.find("*/")< line.length())
        found == false;
    }
}
if (found)
    {
        if (line.find("*/")< line.length())
        found = false;
    }
}