- 1.功能说明
- 2.代码
一些软件在运行时,需要一些命令。这里使用通过字符串的方式,来获取软件启动需要的一些参数。
比如:-name1 aaa -name2 bbb
有这样一个字符串,通过解析-name1对应的aaa,-name2对应的bbb;
// ConsoleApplication3.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #includeusing namespace std; void GetCanShu(std::string strcmd); std::string GetSegment(std::string phrase, std::string cmdline); std::string Left(std::string srcStr, int pos); std::string Right(std::string srcStr, int pos); std::string Mid(std::string srcStr, int pos, int len); std::string TrimLeft(std::string srcStr, const std::string& phrase); std::string TrimRight(std::string srcStr, const std::string& phrase); int main() { std::string TestStrCmd = "-name1 aaa -name2 bbb"; GetCanShu(TestStrCmd); } void GetCanShu(std::string strcmd) { std::string sName1 = GetSegment("-name1", strcmd);// std::string sName2 = GetSegment("-name2", strcmd);// std::cout << sName1 << endl; std::cout << sName2 << endl; } std::string GetSegment(std::string phrase, std::string cmdline) { std::string str; int phrasePos = cmdline.find(phrase, 0); if (phrasePos < 0) { return str; } int pos = cmdline.find("-", phrasePos + 1); if (pos < 0) { str = Right(cmdline, cmdline.length() - phrasePos); } else { str = Mid(cmdline, phrasePos, pos - phrasePos); } str = TrimLeft(str, phrase); str = TrimLeft(str, " "); str = TrimLeft(str, """); str = TrimRight(str, " "); str = TrimRight(str, " ""); return str; } std::string Left(std::string srcStr, int pos) { std::string str; if (0 == srcStr.length() || pos < 0) { return srcStr; } int i = 0; for (; i < pos; i++) { str += srcStr[i]; } return str; } std::string Right(std::string srcStr, int pos) { std::string str; if (0 == srcStr.length() || pos < 0) { return srcStr; } int i = pos; for (; i < srcStr.length(); i++) { str += srcStr[i]; } return str; } std::string Mid(std::string srcStr, int pos, int len) { std::string str; if (0 == srcStr.length() || pos < 0 || len < 0) { return srcStr; } int i = pos; for (; i < (pos + len); i++) { str += srcStr[i]; } return str; } std::string TrimLeft(std::string srcStr, const std::string& phrase) { std::string str; std::string::size_type pos = srcStr.find(phrase, 0); if (pos == std::string::npos) { return srcStr; } str = Right(srcStr, pos + phrase.length()); return str; } std::string TrimRight(std::string srcStr, const std::string& phrase) { std::string str; std::string::size_type pos = srcStr.find(phrase, 0); if (pos == std::string::npos) { return srcStr; } str = Left(srcStr, srcStr.length() - phrase.length()); return str; }



