我正在做一个程序来计算.cpp
文件的行数,类的数量,注释的数量,函数的数量,以及类或函数内的行数
我的一个问题是,我无法比较我和我的下一个角色。
这是我的代码:
while(readfile.good())
{
string compare;
while(!readfile.eof())
{
std::getline(readfile, compare);
number_of_lines++;
if(readfile.peek() == 47 && /*here i need to compare next character*/)
lines_of_comment++;
if((offset = compare.find("/*clase*/", 0)) != string::npos)
{
lines_of_comment++;
number_of_class++;
}
else if ((offset = compare.find("/*funcion*/",0)) != string::npos)
{
lines_of_comment++;
number_of_functions++;
}
else if ((offset = compare.find("/*end*/",0)) != string::npos)
lines_of_comment++;
}
}
如何比较下一个角色?
如果你能给我一些关于如何计算函数内部线条的想法。
答案 0 :(得分:1)
回答这一行:
template <class S>
void stk_pop(S &stk)
{
stk.pop();
}
基本上,你想偷看两个角色。您可以使用此代码((1)或(2)):
if(readfile.peek() == 47 && /*here i need to compare next character*/)
输出将是:
#include <iostream>
#include <sstream>
int main()
{
std::istringstream iss("Hello");
std::cout << (char) iss.get();
std::cout << (char) iss.peek(); // can be get() if you use (2)
// (1)
iss.unget();
// (2)
//iss.seekg(-1, std::ios_base::cur);
std::cout << (char) iss.peek() << std::endl;
return 0;
}
然而,我不明白为什么你需要偷看。你不想解析HeH
吗? e.g:
compare
另请注意,您应该使用if(compare.length() >= 2 && compare.substr(0, 2) == "//")
作为循环条件,而不是评论中提到的std::getline(readfile, compare)
。外!readfile.eof()
应为while
。