我该怎么做,让我的程序使用拖放到其图标上的文件作为参数?
我的当前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上,并在我的应用程序中处理它们。
编辑: 传入的参数被用作文件名,在构造函数中构建。
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) { cout << "错误:参数数量不正确!请至少提供一个参数...\n" << endl; cout << "\n" << "程序已关闭...\n\n" << endl; cin.ignore(); exit(1); return 0; } }
该代码段是一个C++程序的主函数。它检查是否有足够的参数传递给程序。如果没有,程序将输出错误消息并关闭。否则,程序将继续执行。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();
也许它根本没到那里?
有人能帮忙吗?
std::cout << "pause";
,不知何故它就开始工作了。 - feos