У меня есть куча файлов, написанных в основном на одном языке программирования, а также на некоторых других. Они находятся в разных папках, но мало и целеустремлены.
Я хочу создать программу, в которой указано, сколько строк кода есть. Я знаю, что могу сделать это для одного файла, просто так:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream f("file.txt");
int n = 0, aux;
string line;
while (getline(f, line))
n++;
cout << endl << n << " lines read" <<endl;
f.close();
}
Но как я могу "просмотреть" все файлы и папки и прочитать их все? Чтобы сделать это явно, для каждого из них звучит ужасно для меня.
Объединив то, что было написано другими, это будет ваша программа с использованием Qt:
#include <iostream>
#include <fstream>
#include <QApplication>
#include <QDir>
#include <QString>
using namespace std;
int countFile (QString path)
{
ifstream f (path.toStdString().c_str());
int n = 0;
string line;
while (getline(f, line))
n++;
return n;
}
int countDir (QString path)
{
int n = 0;
QDir dir (path);
if (dir.exists())
{
QFileInfoList list = dir.entryInfoList ();
for (int i = 0; i < list.size(); ++i)
{
if (list[i].isDir())
n += countDir (list[i].absoluteFilePath());
else
n += countFile (list[i].absoluteFilePath());
}
}
return n;
}
int main(int argc, char **argv)
{
QApplication a(argc, argv);
cout << endl << countDir ("path/to/dir") << " lines read" <<endl;
return 0;
}