我必须为接受C ++文件的类编写此程序,从代码中删除所有注释并将代码读出到新文件或输出中。经过长时间的努力,我不断收到编译错误,我只是无法弄清楚我做错了什么。一些帮助将非常感激。
#include <iostream>
#include <fstream>
#include <string>
#include <cassert>
#include <cstdio>
using namespace std;
void remove_comments (ifstream& , ofstream&); //function declaration
int main(void)
{
int i;
string inputFileName;
string outputFileName;
string s;
ifstream fileIn;
ofstream fileOut;
char ch;
do
{
cout<<"Enter the input file name:";
cin>>inputFileName;
}
while (fileIn.fail() );
cout<<"Enter the output file name: ";
cin>>outputFileName;
fileIn.open(inputFileName.data());
assert(fileIn.is_open() );
remove_comments ( fileIn , fileOut);
fileIn.close();
fileOut.close();
return 0;
}
void remove_comments( ifstream& fileIn , ofstream& fileOut)
{
string line;
bool flag = false;
while (! fileIn.eof() )
{
getline(fileIn, line);
if (line.find("/*") < line.length() )
flag = true;
if (! flag)
{
for (int i=0; i < line.length(); i++)
{
if(i<line.length())
if ((line.at(i) == '/') && (line.at(i + 1) == '/'))
break;
else
fileOut << line[i];
}
fileOut<<endl;
}
if(flag)
{
if(line.find("*/") < line.length() )
flag = false;
}
}
我得到的错误是:
In function 'void remove_comments(std::ifstream&,std::ofstream&)':
53: error: 'fileIn' was not declared in this scope
67: error: expected primary-expression before 'else'
67: error: expected `;' before 'else'
70: error: 'fileOut' was not declared in this scope
At global scope:
81: error: expected declaration before '}' token
答案 0 :(得分:2)
remove_comments( ifstream& , ofstream&)
你没有写参数名,应该是
remove_comments( ifstream& fileIn, ofstream& fileOut)
你最后还错过了几个括号
答案 1 :(得分:0)
main()
中声明的变量不可用于其他函数。与所有功能类似。这称为变量范围。
fileIn
中的变量remove_comments
在函数内部没有声明,这是编译器所抱怨的。也许,就像@Ahmed Magdy Guda所说,你忘了在你的函数声明和定义中输入参数。