STL学习系列之二:标准模板库(STL)介绍
作者 佚名技术
来源 程序设计
浏览
发布时间 2012-06-29
public: bool operator () (string& PossibleFlag) { return PossibleFlag.substr(0,1)=="-"; } }; class IsAFileName { public: bool operator () (string& StringToCheck) { return !IsAFlag()(StringToCheck); } }; class IsHelpFlag { public: bool operator () (string& PossibleHelpFlag) { return PossibleHelpFlag=="-h"; } }; void main (int argc, char *argv[]) { list<string> CmdLineParameters; // the command line parameters list<string>::iterator StartOfFiles; // start of filenames list<string> Flags; // list of flags list<string> FileNames; // list of filenames for (int i = 0; i < argc; ++i) CmdLineParameters.push_back(argv[i]); CmdLineParameters.pop_front(); // we don''t want the program name // make sure we have the four mandatory file names int NumberOfFiles(0); count_if(CmdLineParameters.begin(), CmdLineParameters.end(), IsAFileName(), NumberOfFiles); cout << "The " << (NumberOfFiles == 4 ? "correct " : "wrong ") << "number (" << NumberOfFiles << ") of file names were specified" << endl; // move any flags to the beginning StartOfFiles = stable_partition(CmdLineParameters.begin(), CmdLineParameters.end(), IsAFlag()); cout << "Command line parameters after stable partition" << endl; for_each(CmdLineParameters.begin(), CmdLineParameters.end(), PrintIt); // Splice any flags from the original CmdLineParameters list into Flags list. Flags.splice(Flags.begin(), CmdLineParameters, CmdLineParameters.begin(), StartOfFiles); if (!Flags.empty()) { cout << "Flags specified were:" << endl; for_each(Flags.begin(), Flags.end(), PrintIt); } else { cout << "No flags were specified" << endl; } // parameters list now contains only filenames. Splice them into FileNames list. FileNames.splice(FileNames.begin(), CmdLineParameters, CmdLineParameters.begin(), CmdLineParameters.end()); if (!FileNames.empty()) { cout << "Files specified (in order) were:" << endl; for_each(FileNames.begin(), FileNames.end(), PrintIt); } else { cout << "No files were specified" << endl; } // check if the help flag was specified if (find_if(Flags.begin(), Flags.end(), IsHelpFlag())!=Flags.end()) { cout << "The help flag was specified" << endl; } // open the files and do whatever you do } 给出这样的命令行: //zbf:在vc6IDE下可以模拟出一样的结果 test17 -w linux -o is -w great 输出是:
18 结论 我们仅仅简单的谈了谈你可以 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: LCMapString函数下一篇: 找到数组轮转的X
关于STL学习系列之二:标准模板库(STL)介绍的所有评论