我的系统是 Ubuntu 20.04。假设我在project
目录中,该目录包含以下文件夹/文件:test
, hello.txt
. 我编写了以下程序:-
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int main(int argc, char* argv[]){
const char* command = "ls" + argv[1];
system(command);
return 0;
}
然后我将test
在运行它时作为程序的第一个参数。我预计它会打印文件夹中的所有文件和文件test
夹。但它给了我一个错误。有人可以告诉我,错误是什么以及如何修复它?
您在代码中所做的事情是不正确的,您添加了两个指针,结果显然不是您所期望的。使用std::string
. 所以你的代码看起来像这样:
#include <iostream>
#include <string>
#include <cstdlib>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
if(argc < 2)
{
cerr << "missing cli argument\n";
return -1;
}
auto command = std::string("ls ") + std::string(argv[1]);
system(command.data());
return 0;
}
通常使用该system
功能是一种不好的做法,因此在您的情况下,我宁愿使用执行您的任务的功能:显示文件夹中的所有文件。连同您的代码,它将如下所示:
#include <string>
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main(int argc, char* argv[])
{
if(argc < 2)
{
std::cerr << "missing cli argument\n";
return -1;
}
std::string path = argv[1];
for (const auto & entry : fs::directory_iterator(path))
std::cout << entry.path() << std::endl;
return 0;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句