本教程原文链接: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的辅助类

[ZETCODE]wxWidgets教程二:辅助类的更多相关文章

  1. [ZETCODE]wxWidgets教程八:组件专题1

    本教程原文链接:http://zetcode.com/gui/wxwidgets/widgets/ 翻译:瓶哥 日期:2013年12月12日星期四 邮箱:414236069@qq.com 主页:htt ...

  2. [ZETCODE]wxWidgets教程七:对话框

    本教程原文链接:http://zetcode.com/gui/wxwidgets/dialogs/ 翻译:瓶哥 日期:2013年12月9日星期一 邮箱:414236069@qq.com 主页:http ...

  3. [ZETCODE]wxWidgets教程六:事件处理

    本教程原文链接:http://zetcode.com/gui/wxwidgets/events/ 翻译:瓶哥 日期:2013年12月7号星期六 邮箱:414236069@qq.com 主页:http: ...

  4. [ZETCODE]wxWidgets教程五:布局管理

    本教程原文链接:http://zetcode.com/gui/wxwidgets/layoutmanagement/ 翻译:瓶哥 日期:2013年12月4日星期三 邮箱:414236069@qq.co ...

  5. [ZETCODE]wxWidgets教程四:菜单栏和工具栏

    本教程原文链接:http://zetcode.com/gui/wxwidgets/menustoolbars/ 翻译:瓶哥 日期:2013年11月28日星期四 邮箱:414236069@qq.com ...

  6. [ZETCODE]wxWidgets教程三:第一个窗体程序

    本教程原文链接:http://zetcode.com/gui/wxwidgets/firstprograms/ 翻译:瓶哥 日期:2013年11月27日星期三 邮箱:414236069@qq.com ...

  7. [ZETCODE]wxWidgets教程九:组件专题2

    本教程原文链接:http://zetcode.com/gui/wxwidgets/widgetsII/ 翻译:瓶哥 日期:2013年12月15日星期日 邮箱:414236069@qq.com 主页:h ...

  8. [ZETCODE]wxWidgets教程一:介紹

    本教程原文链接:http://zetcode.com/gui/wxwidgets/introduction/ 翻译:瓶哥 日期:2013年11月26日星期二 邮箱: 414236069@qq.com ...

  9. CRL快速开发框架系列教程二(基于Lambda表达式查询)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

随机推荐

  1. MongoDB笔记(一)MongoDB概述和安装

    概述 关键词:关系数据库.非关系数据库 关系数据库: 关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据.目前主流的关系数据库有oracle.SQL.ac ...

  2. u-boot和linux的机器码

    先看u-boot的机器码和linux的机器码是在什么地方决定的. 1. u-boot的机器码是在u-boot的board/fs2410/fs2410.c文件里决定的:     /* arch numb ...

  3. 更新ACCESS数据库出现“字段太小而不能接受所要添加的数据的数量。试着插入或粘贴较少的数据。”的解决方法

    今天进行数据调试时出现“字段太小而不能接受所要添加的数据的数量.试着插入或粘贴较少的数据.”,跟踪发现是在更新数据库的数据时出现的. 打开数据库表格发现出错的数据字段类型被定义为“文本”,也就是数据最 ...

  4. 分享自己动手弄的基于Rime的新世纪五笔输入法码表

    实验室新搞了一台iMac,没有支持新世纪的码表的中文输入法啊.搜索半天大家推荐用Rime(鼠须管)来挂接新世纪码表.不知道还有没有其它支持外挂码表的Mac版输入法,暂时只有搞这个了.看了一下别人已经做 ...

  5. 从xib加载文件

    一般自定义View, 如果从xib加载文件, 定义一个类方法, 返回xib + (instancetype)dropdown { return [[[NSBundle mainBundle] load ...

  6. UIWebView1-b

    随着H5的强大,hybrid app已经成为当前互联网的大方向,单纯的native app和web app在某些方面显得就很劣势.关于H5的发展史,这里有一篇文章推荐给大家,今天我们来学习最基础的基于 ...

  7. WebViewJavascriptBridge

    上一篇文章介绍了通过UIWebView实现了OC与JS交互的可能性及实现的原理,并且简单的实现了一个小的示例DEMO,当然也有一部分遗留问题,使用原生实现过程比较繁琐,代码难以维护.这篇文章主要介绍下 ...

  8. C++中二维数组的动态创建与处理

    C++中用new动态创建二维数组的格式一般是这样: TYPE (*p)[N] = new TYPE [][N]; 其中,TYPE是某种类型,N是二维数组的列数.采用这种格式,列数必须指出,而行数无需指 ...

  9. 个人笔记--Servlet之过滤器实现权限拦截

    一.编写一个Java类实现javax.servlet.Filter接口 package cn.edu.sxu.filter; import java.io.IOException; import ja ...

  10. hdu 4731

    一道找规律的题,但今天的智商捉急,一直都想不到点子上: 比赛之后和别人讨论的时候,在n=2的情况下,前面两个是aa,后面就接着很多个aababb,然后最后再判断下就行了~~~ 以后对于这种题还是不要太 ...