首页 > 其他 > 详细

[wxWidgets]_[初级]_[不常见但实用的类wxCmdLineParser]

时间:2014-10-31 23:42:35      阅读:729      评论:0      收藏:0      [点我收藏+]


场景:

1. 有时候需要构造命令行字符串传递給函数调用,比如CreateProcess,如果参数是动态的,那么就得使用类似std::vector<string>添加单个参数,之后拼接为一个string.

wx有给这类处理类,就是wxCmdLineParser ,它既能拼接为字符串,又可以把字符串分解为一个参数数组。


console.cpp

#include "wx/wxprec.h"

#ifndef WX_PRECOMP
    #include "wx/wx.h"
#endif

#include "wx/cmdline.h"
#include "wx/app.h" 
#include <assert.h>
#include <iostream>
#include <stdio.h>


using namespace std;

void TestParseCmdLine()
{
	cout << "TestParseCmdLine" << endl;
	wxString cmd("gcc -c -o test.exe test.cpp");
	//1.解析字符串
	wxCmdLineParser parser;
	//parser.SetCmdLine(0,(char**)NULL);
	wxArrayString arr = parser.ConvertStringToArgs(cmd);
	for(int i = 0; i < arr.size(); ++i)
	{
		cout << arr[i] << endl;
	}
	//2.生成字符串
	
	parser.AddParam(wxT("gcc"));
	parser.AddParam(wxT("-c"));
	parser.AddParam(wxT("-o"));
	parser.AddParam(wxT("test.exe"));
	parser.AddParam(wxT("test.cpp"));
	//parser.Reset();
	//parser.Parse();
	cout << "parser.GetParamCount(): " << parser.GetParamCount() << endl;
	for(int i = 0; i < parser.GetParamCount(); ++i)
	{
		cout << parser.GetParam(i) << endl;
	}
	cout << "argv: " << wxTheApp->GetAppName() << endl;
	wxString str = parser.GetUsageString();
	wxString appName = wxTheApp->GetAppName();
	cout << "parser: " << str.Mid(str.Find(wxTheApp->GetAppName())+appName.Length()+1) << endl;
}

int main(int argc,char* argv[])
{
	wxInitialize();
	wxEntryStart(argc,argv);
	wxInitAllImageHandlers();

	TestParseCmdLine();

	wxEntryCleanup();
	wxUninitialize();
	return 0;
}





输出:

TestParseCmdLine
gcc
-c
-o
test.exe
test.cpp
parser.GetParamCount(): 0
argv: test_wxCmdLineParser
parser: gcc -c -o test.exe test.cpp




[wxWidgets]_[初级]_[不常见但实用的类wxCmdLineParser]

原文:http://blog.csdn.net/infoworld/article/details/40662623

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!