我是C ++的自学者。到目前为止,我设法编写了一个程序,它留下单行注释并告诉程序中的总行数。如何留下多行注释。
#include <iostream>
#include <fstream>
//#include<conio.h>
#include<string>
using namespace std;
int main () {
char c[100];
string path;
int num=0;
cout<<"Enter a file name";
cin>>path;
ifstream is;
//cout<<"ennter the file to count the lines in file\n";
is.open (path.c_str());
try
{
if(!is)
{
throw 1;
}
}
catch(int a)
{
cout<<"Cannot open file";
}
if(is)
{
while (is.good())
{
is.getline(c,100);
if (c[0]!='\\')
num++;
}
is.close();
cout<<"Number of lines in file is "<<num<<endl;
}
system("pause");
return 0;
}
答案 0 :(得分:1)
您可以使用if子句检查一行是否包含“/ *”。如果您找到匹配项,则忽略所有行,直到达到“* /” 看看你是否可以自己找出这个代码。如果您遇到问题,请告诉我们您的尝试,我们可以帮助您。
答案 1 :(得分:1)
最后我开始工作了 现在我正在计算括号
#include <iostream>
#include <fstream>
#include<string>
using namespace std;
ifstream is;
void lines();
void braces();
int main ()
{
int choice=0;
string path;
cout<<"Enter a file name to count :";
cin>>path;
is.open (path.c_str());
if(is)
{
cout<<"1.No of lines\n2.Total No of lines excluding braces\nEnter your choice:";
cin>>choice;
switch(choice)
{
case 1:
lines();
break;
case 2:
braces();
break;
default:
cout<<"Invalid selection";
}
}
else
{
cout<<"Invalid path";
}
system("pause");
return 1;
}
void lines()
{
string tmp;
size_t cno=0;
int num=0;
while (is.good())
{
getline(is,tmp);
if((tmp.find("/*")==0))
{
cno=tmp.find("*/");
while(cno==-1)
{
getline(is,tmp);
cno=tmp.find("*/");
}
}
else if((tmp.find("//")==0))
{
}
else
{ num++;
}
}
is.close();
cout<<"Number of lines in file is "<<num<<endl;
}
void braces()
{
string tmp;
size_t cno=0;
int num=0;
while (is.good())
{
getline(is,tmp);
if((tmp.find("/*")==0))
{
cno=tmp.find("*/");
while(cno==-1)
{
getline(is,tmp);
cno=tmp.find("*/");
}
}
else if((tmp.find("//")==0))
{
}
else if((tmp.find("{")!=-1&&tmp.find("}")!=-1))
{ num++;
}
else if((tmp.find("{")!=-1||tmp.find("}")!=-1))
{}
else
num++;
}
cout<<"Number of lines without braces is:"<<num<<endl;
}
答案 2 :(得分:0)
在C ++中,您可以使用std :: find来检查是否出现字符串“/ *”或“//”。
在第一种情况下,您可以跳过所有行,直到字符串“* /”。
另一种解决方案是直接调用脚本,如果你正在使用linux,我希望如此!
int main() {
const int rows = system("countRows.sh");
...
}
您的脚本 countRows.sh 位于:
#!/bin/bash
wc -l foo.cpp | cut -f1 -d' '
该命令为您提供所有文件行,您必须实现过滤器!