[ZETCODE]wxWidgets教程二:辅助类
本教程原文链接:http://zetcode.com/gui/wxwidgets/helperclasses/
翻译:瓶哥
日期:2013年11月27日星期三
主页: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教程二:辅助类的更多相关文章
- [ZETCODE]wxWidgets教程八:组件专题1
本教程原文链接:http://zetcode.com/gui/wxwidgets/widgets/ 翻译:瓶哥 日期:2013年12月12日星期四 邮箱:414236069@qq.com 主页:htt ...
- [ZETCODE]wxWidgets教程七:对话框
本教程原文链接:http://zetcode.com/gui/wxwidgets/dialogs/ 翻译:瓶哥 日期:2013年12月9日星期一 邮箱:414236069@qq.com 主页:http ...
- [ZETCODE]wxWidgets教程六:事件处理
本教程原文链接:http://zetcode.com/gui/wxwidgets/events/ 翻译:瓶哥 日期:2013年12月7号星期六 邮箱:414236069@qq.com 主页:http: ...
- [ZETCODE]wxWidgets教程五:布局管理
本教程原文链接:http://zetcode.com/gui/wxwidgets/layoutmanagement/ 翻译:瓶哥 日期:2013年12月4日星期三 邮箱:414236069@qq.co ...
- [ZETCODE]wxWidgets教程四:菜单栏和工具栏
本教程原文链接:http://zetcode.com/gui/wxwidgets/menustoolbars/ 翻译:瓶哥 日期:2013年11月28日星期四 邮箱:414236069@qq.com ...
- [ZETCODE]wxWidgets教程三:第一个窗体程序
本教程原文链接:http://zetcode.com/gui/wxwidgets/firstprograms/ 翻译:瓶哥 日期:2013年11月27日星期三 邮箱:414236069@qq.com ...
- [ZETCODE]wxWidgets教程九:组件专题2
本教程原文链接:http://zetcode.com/gui/wxwidgets/widgetsII/ 翻译:瓶哥 日期:2013年12月15日星期日 邮箱:414236069@qq.com 主页:h ...
- [ZETCODE]wxWidgets教程一:介紹
本教程原文链接:http://zetcode.com/gui/wxwidgets/introduction/ 翻译:瓶哥 日期:2013年11月26日星期二 邮箱: 414236069@qq.com ...
- CRL快速开发框架系列教程二(基于Lambda表达式查询)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
随机推荐
- nodejs 实现机制
最近在学习nodejs,作为一个从未学过javascript的程序员,把自己学习的过程贴出来,当做记录和总结吧. 1. nodejs的原理: nodejs完全是基于事件轮询机制的一个javascrip ...
- IOS 学习笔记 2015-03-20 OC-集合-数组
[NSArray] 一 定义 1 不可变数组 2 oc中数组的元素可以是任何对象 3 数字中装有元素的地址 二 初始化 NSArray *变量 = [[NSArry alloc] initWithOb ...
- Scala - 正则表达式匹配例子
壹Try胜仟言 别忘了 import scala.util.matching._ scala> var s = "a_b_c_d_e"s: String = a_b_c_d_ ...
- imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Corrupt JPEG data: 1 extraneous bytes be
imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Corrupt JPEG data: 1 extraneous bytes be ...
- Python:如何得到Popen的输出?
from:http://www.cnblogs.com/bluescorpio/archive/2010/05/04/1727020.html 最近在用subprocess中的Popen做个磁盘监控小 ...
- jQuery 之 .stop() 方法
总结version 1.7版本前.stop([clearQueue][,jumpToEnd])clearQueue: 布尔值,默认是 false;此值处理是相关的动画队列是否移除,如果为 false ...
- js异步脚本
1.延迟脚本 HTML4.01为<script>标签定义了defer属性,为了表明脚本在执行时不会影响页面的构造.也就是说,脚本会在整个页面都解析完毕后再运行.因此在<script& ...
- nodejs中间层现实
初次接触nodejs,是一种非常神奇的东西,未来必火起来.个人觉得最大优势npm命令. 闲话少说,直入主题.这是一个博客项目,php最为服务端,提供数据给node:nodejs+express作为中间 ...
- SWD模式和JTAG模式
一.功能 SWD模式:仿真 下载 JTAG模式:仿真 下载 二.接口 1.J-link JTAG/SWD接口 2.开发板接口电路 ①SWD模式 4根线(包片机) ②JTAG模式 20脚JTAG(网络) ...
- leetcode 第五题 Longest Palindromic Substring (java)
Longest Palindromic Substring Given a string S, find the longest palindromic substring in S. You may ...