如果一个目录下不包含其他目录,只有文件,怎么得到文件数量?这么容易的一个问题,你会用什么方法去做?
我喜欢利用shell来帮忙:
在程序中构造shell命令:ls 目录名 | wc -l
然后执行它,得到返回的结果,就结束了。
执行一个shell命令并获取其返回结果的函数示例:
std::string getCmdRes(const std::string sc)
{
FILE* crs = popen(sc.c_str(), "r"); // execute the shell command
char result[1024] = "0";
fread(result, sizeof(char), sizeof(result), crs);
if (NULL != crs)
{
fclose(crs);
crs = NULL;
}
std::string res = result;
return res;
}
将shell命令作为参数传入,返回的就是执行结果了,简单吧。
类似地,如果有其他可以用shell命令很容易实现的运算,我们也可以这样“偷懒”,直接在C++里“调用”它。