gpt4 book ai didi

c++ - 如何在 *.exe 上启用拖动文件并将其作为参数获取?

转载 作者:可可西里 更新时间:2023-11-01 13:16:33 25 4
gpt4 key购买 nike

我需要做什么才能使我的程序使用已拖放到其图标上的文件作为参数?

我当前的 main 方法如下所示:

int main(int argc, char* argv[])
{
if (argc != 2) {
cout << "ERROR: Wrong amount of arguments!" << endl;
cout << "\n" << "Programm closed...\n\n" << endl;
exit(1);
return 0;
}

Converter a(argv[1]);
// ...

cout << "\n" << "Programm finished...\n\n" << endl;

// cin.ignore();
return 0;
}

我真正希望能够做的是选择 10 个(左右)文件,将它们放到 EXE 中,然后在我的应用程序中处理它们。


编辑:

incomming 参数用作文件名,在cunstructor 中构造。

Converter::Converter(char* file) {
// string filename is a global variable
filename = file;
myfile.open(filename.c_str(), ios_base::in);
}

读取文本文件的方法:

string Converter::readTextFile() {
char c;
string txt = "";

if (myfile.is_open()) {

while (!myfile.eof()) {
myfile.get(c);
txt += c;
}

} else {
error("ERROR: can't open file:", filename.c_str());
}
return txt;
}

编辑 2:已删除

更新:
我又回到了这一点。

实际的 Main 方法:

// File path as argument

int main(int argc, char* argv[]) { 如果(argc < 2){ 计算器 << "错误:参数数量错误!至少给出一个参数...\n" << 结束; cout << "\n"<< "程序关闭...\n\n"<< endl; cin.忽略(); 退出(1); 返回 0;

vector<string> files;

for (int g = 1; g < argc; g++) {
string s = argv[g];
string filename = "";
int pos = s.find_last_of("\\", s.size());

if (pos != -1) {
filename = s.substr(pos + 1);

cout << "argv[1] " << argv[1] << endl;
cout << "\n filename: " << filename << "\n pos: " << pos << endl;
files.push_back(filename);

}
files.push_back(s);
}

for (unsigned int k = 0; k < files.size(); k++)
{
cout << "files.at( " << k << " ): " << files.at(k).c_str() << endl;
Converter a(files.at(k).c_str());
a.getATCommandsFromCSV();
}


cout << "\n" << "Programm finished...\n\n" << endl;

cin.ignore();

return 0;
}

实际上,控制台窗口出现大约 0.5 秒后再次关闭。
它不会在我的任何 cin.ignore(); 上停止,也许它没有到达那里?

有人可以帮忙吗?

最佳答案

除了处理命令行参数之外,您的程序不需要做任何特殊的事情。当您将文件拖放到资源管理器中的应用程序时,它只会将文件名作为参数传递给程序。对于多个文件也是如此。

如果您所期望的只是一个文件名列表,那么只需遍历所有参数,对它们做任何您想做的事就可以了。这将适用于零到几乎任意多个参数。

关于c++ - 如何在 *.exe 上启用拖动文件并将其作为参数获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4659105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com