本教程原文链接:http://zetcode.com/gui/wxwidgets/helperclasses/

翻译:瓶哥

日期:2013年11月27日星期三

邮箱:414236069@qq.com

主页:http://www.cnblogs.com/pingge/

若有翻译错误或者歧义请联系我!

wxWidgets包含着一组丰富的辅助类,这有助于程序员完成他们的工作。这些辅助类与字符串、文件系统、XML文件、数据流、数据库、网络一同工作。在这里我们将只展示其中的小小的一部分。

wxWidgets能创建控制台或者GUI程序。在这一章,我们将会举例说明一些基于控制台程序的辅助类。

Console

这是一个简单的控制台应用程序,这个程序在控制台窗口上显示一些 文字。

// console.cpp

#include <wx/string.h>

int main(int argc, char ** argv)

{

wxPuts(wxT("A wxWidgets console application"));

wxPuts(_T("A wxWidgets console application"));

return ;

}

wxString

wxString是一个字符串类。

在下一个例子中,我们定义了三个wxStrings,我们使用加法运算符通过这几个字符串创建了另一个字符串。

// addition.cpp

#include <wx/string.h>

int main(int argc, char ** argv)

{

wxString str1 = _T("Linux");

wxString str2 = _T("Operating");

wxString str3 = _T("System");

wxString str = str1 + _T(" ") + str2 + _T(" ") + str3;

wxPuts(str);

return ;

}

Printf()方法用于格式化字符串。

// formatted.cpp

#include <wx/string.h>

int main(int argc, char ** argv)

{

int flowers = ;

wxString str;

str.Printf(_T("There are %d red roses."), flowers);

wxPuts(str);

return ;

}

接下来的这个例子,检查了一个字符串是否包含另一个字符串(子串),这里我们有一个Contains()方法。

// contains.cpp

#include <wx/string.h>

int main(int argc, char ** argv)

{

wxString str = _T("The history of my life");

if(str.Contains(_T("history")))

{

wxPuts(_T("Contains!"));

}

if(!str.Contains(_T("plain")))

{

wxPuts(_T("Does not contain!"));

}

return ;

}

方法Len()返回字符串中的字符个数。

// length.cpp

#include <wx/string.h>

int main(int argc, char ** argv)

{

wxString str = _T("The history of my life");

wxPrintf(_T("The string has %d characters\n"), str.Len());

return ;

}

方法MakeLower()和MakeUpper()使得字符小写或者大写

// cases.cpp

#include <wx/string.h>

int main(int argc, char ** argv)

{

wxString str = _T("The history of my life");

wxPuts(str.MakeLower());

wxPuts(str.MakeUpper());

return ;

}

公用函数

wxWidgets有几个方便的公用函数,用于执行一些命令,例如获得用户主文件夹目录或者获得操作系统名称。

在接下来的几个例子中,我们执行ls命名,这里我们有wxShell()函数。

// shell.cpp

#include <wx/string.h>

#include <wx/utils.h>

int main(int argc, char ** argv)

{

wxShell(_T("dir")); // Windows

// wxShell(_T("ls -l")); // Unix

return ;

}

接下来我们将获得用户的主文件夹目录、操作系统名、用户名、主机名、全部的空闲内存。

// system.cpp

#include <wx/string.h>

#include <wx/utils.h>

int main(int argc, char ** argv)

{

wxPuts(wxGetHomeDir());wxPuts(_T(""));

wxPuts(wxGetOsDescription());

// wxPuts(wxGetUserName()); // Unix

wxPuts(wxGetFullHostName());

long mem = wxGetFreeMemory().ToLong();

wxPrintf(_T("Memory : %ld\n"), mem);

return ;

}

时间和日期

在wxWidgets里,有几个类是关于日期和时间的。

这个例子以几种不同的格式输出日期和时间。

// datetime.cpp

#include <wx/datetime.h>

int main(int argc, char ** argv)

{

wxDateTime now = wxDateTime::Now();

wxString date1 = now.Format();

wxString date2 = now.Format(_T("%X"));

wxString date3 = now.Format(_T("%x"));

wxPuts(date1);

wxPuts(date2);

wxPuts(date3);

return ;

}

接下来这个例子,我们将显示当前不同城市的时间。

// datetime2.cpp

#include <wx/datetime.h>

int main(int argc, char ** argv)

{

wxDateTime now = wxDateTime::Now();

wxPrintf(_T(" Tokyo: %s\n"), now.Format(_T("%X"), wxDateTime::GMT9).c_str());

wxPrintf(_T(" Moscow: %s\n"), now.Format(_T("%X"), wxDateTime::MSD).c_str());

wxPrintf(_T("Budapest: %s\n"), now.Format(_T("%X"), wxDateTime::CEST).c_str());

wxPrintf(_T(" London: %s\n"), now.Format(_T("%X"), wxDateTime::WEST).c_str());

wxPrintf(_T("New York: %s\n"), now.Format(_T("%X"), wxDateTime::EDT).c_str());

return ;

}

文件操作

wxWidgets有几个类辅助文件操作,这是对于文件的底层访问而不是处理文件流。

在接下来的这个例子中,我们使用wxFile类来新建一个文件并且写入一些数据,我们也测试这个文件是否是打开状态。注意:当我们新建一个文件的时候,这个文件会自动的处于打开状态。

// createfile.cpp

#include <wx/file.h>

int main(int argc, char ** argv)

{

wxString str = _T("You make me want to be a better man.\n");

wxFile file;

file.Create(_T("quote"), true);

if(file.IsOpened())

{

wxPuts(_T("The file is opened"));

}

file.Write(str);

file.Close();

if(!file.IsOpened())

{

wxPuts(_T("The file is not opened"));

}

return ;

}

wxTextFile是一个允许你逐行处理文件的简单的类,这个类比wxFile类更容易使用。

在接下来这个例子中,我们将输出文件的行数、第一行、最后一行内容,最后我们将读取文件的全部内容并输出。

// readfile.cpp

#include <wx/textfile.h>

int main(int argc, char ** argv)

{

wxTextFile file(_T("readfile.cpp"));

file.Open();

wxPrintf(_T("Number of lines: %d\n"), file.GetLineCount());

wxPrintf(_T("First line: %s\n"), file.GetFirstLine().c_str());

wxPrintf(_T("Lase line: %s\n"), file.GetLastLine().c_str());

wxPuts(_T("-------------------------------------------"));

wxString s;

for(s = file.GetFirstLine(); !file.Eof(); s = file.GetNextLine())

{

wxPuts(s);

}

file.Close();

return ;

}

wxDIr类允许我们枚举文件和目录。

在接下来这个例子中,我们将输出当前工作目录中的所有有效的文件名和目录名。

// dir.cpp

#include <wx/dir.h>

#include <wx/filefn.h>

int main(int argc, char ** argv)

{

wxDir dir(wxGetCwd());

wxString file;

bool cont = dir.GetFirst(&file, wxEmptyString, wxDIR_FILES | wxDIR_DIRS);

while(cont)

{

wxPuts(file);

cont = dir.GetNext(&file);

}

return ;

}

在本章中我们介绍了一些wxWidgets的辅助类

最新文章

  1. 【转】JSP中文乱码问题终极解决方案
  2. thinkphp 内置标签volist 控制换行
  3. getdata
  4. UVa 11468 (AC自动机 概率DP) Substring
  5. vm NAT方式linux上不了网 解决方法
  6. VB逆向
  7. FastReport.net 使用记录
  8. Android studio如何使用SVN进行版本控制?
  9. Uva 12171 Sculpture - 离散化 + floodfill
  10. AX视图View中添加静态方法
  11. Module not found: Error: Can't resolve 'XXX' in 'XXXX'
  12. [随笔][Life][咖啡][咖啡分类]
  13. 解决ansible上传速度慢的问题
  14. C++学习8-面向对象编程基础(模板)
  15. 【Spring Security】二、数据库管理用户权限
  16. MariaDB MyCat实现读写分离(15)
  17. 设置TOMCAT SESSIONID 字符长度和生成算法
  18. 20145333茹翔 Exp5 MS11_050
  19. 转)Ubuntu14安装wireshark进行抓包
  20. gradle 2.1构建android出现错误的解决方案

热门文章

  1. SQL Cursor(游标)
  2. Windows(Vertrigo)下Apache与Tomcat的整合
  3. yii学习随感
  4. JavaScript模块化开发库之SeaJS
  5. uboot 顶层makefile细节分析
  6. 图片Base64编码 简单使用
  7. 设置UIButton的文字居右显示 去掉点击默认置灰效果
  8. 《Linux命令行大全》系列(三、Linux 系统)
  9. eclipse打开文件目录
  10. 李洪强漫谈iOS开发[C语言-029] - 关系运算符