바나나를 몰아내는 소프트웨어 공학 수업에 대한 과제가 있습니다. 주어진 파일에 대한 논리적 인 코드 행만을 계산하는 라인 카운터를 설계하라는 요청을 받았습니다. 빈 줄과 주석은 생략해야합니다.C++에서 //로 시작하는 주석 행 건너 뛰기
필자는 어떤 파일을 건든 상관없이 2 줄 씩 줄 번호를 계산한다는 점을 제외하고는 코드가 거의 작동하지 않습니다. 나는 내 생애를 위해 내 문제가 어디에 있는지 알 수 없으며 누군가 나를 도울 수 있는지 궁금해하고 있었다. 여기
내 코드입니다 :#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
#include <stdio.h>
using namespace std;
int main() {
// Initialize variables
ifstream infile;
string filename;
int line = 0;
// Get file input
cout << "Enter the filename" << endl;
cin >> filename;
// open the file
infile.open(filename.c_str());
// read the lines and skip blank lines and comments
while(getline(infile, filename)) {
if(filename.empty() || filename.find("//") == true) {
continue;
}
// increment the line number
++line;
}
// close the file
infile.close();
// display results
cout << "There are " << line << " lines of code in this file." << endl;
}
터미널에서 다음과 같이 카운터 읽기 : "코드 24 개 라인이 파일에 있습니다."
내 계산에 따르면 22 줄의 논리 코드 만 있어야합니다. 도움을 주시면 감사하겠습니다.
'infile.open (filename.c_str())'을 할 필요가 없습니다. 단순히'infile.open (filename)'을 사용하십시오. – emlai
@zenith : 표준 라이브러리의 버전에 따라 다릅니다. 'std :: string' 과부하는 오랜 시간 후에 추가되었습니다. –
또한 사용 방법을 모르는 경우 함수를 사용하지 않아야합니다. 'string :: find'는 문자열에서 발견 된 경우 인수의 위치를 반환하고 발견되지 않은 경우에는 부울 값이 아닌'npos'를 반환합니다. – emlai