DoDataExchange(CDataExchange* pDX)不执行,没有执行
作者:淡月清风 日期:2010-08-11
标准输入,标准输出,标准错误输出与重定向,管道
作者:淡月清风 日期:2010-08-05
1.标准输入,标准输出,标准错误
标准输入(STDIN句柄):指键盘输入,数字代号为0
标准输出(STDOUT句柄):输出到命令提示符窗口,数字代号为1
标准错误(STDERR句柄):错误输出到命令提示符窗口,数字代号为2
表面上看起来标准输出与标准错误似乎并没有什么区别,实际他们确是不同的(参看2.5)。
2.重定向操作符
2.1 > 将命令的标准输出写入到文件中
执行:echo Hello world.>x.txt
意义:将echo输出的字符Hello world.写入到x.txt中,如果x.txt中已有内容,将会被清除
2.2 < 将指定文件的内容作为命令的标准输入
新建一文件x.txt,在其中保存如下内容:
line 1.
this is a new line.
line 3.
执行:find /N "a" <x.txt
意义:将x.txt中的内容作为find程序的标准输入(键盘输入),find程序在其中查找字符"a",并输出"a"所在行的行号及其内容
2.3 >> 将命令的标准输出添加到文件末尾而不删除文件中的信息。
执行:echo Hello world.>>x.txt
意义:将echo输出的字符Hello world.写入到x.txt中,如果x.txt中已有内容,则字符Hello world.被写入到x.txt的末尾
2.4 | 从第一个命令中读取标准输出并将其写入第二个命令的标准输入中。也就是管道。
执行:dir | find "软件.lnk"
意义:在本例中,将同时启动两个命令,但随后 find 命令会暂停,直到它接收到 dir 命令的输出为止。
find 命令使用 dir 命令的输出作为输入,然后将输出发送到句柄 1(即 STDOUT)。
执行:ps | grep "bas*"
意义:将ps的输出传递给grep的输入,即grep将在ps的输出中查找正则表达式"bas*",并将找到的结果输出。
2.5 >& 可将标准错误写入标准输出(2>&1),或者将标准输出写入标准错误(1>&2)
执行:dir "不存在的文件名">x.txt
看起来该命令会将dir的输出写入到x.txt中,实际上却没有全部写入,最后的“找不到文件”几个字被漏下了。
原因是“找不到文件”不是标准输出,而是标准错误。
执行:dir "不存在的文件名">x.txt 2>&1
意义:该命令会将dir的输出都写入到x.txt中(标准错误被写入到了标准输出中)
执行:ls -#$ 2>&1 | grep "usage"
意义:grep程序从命令ls -#$输出的标准错误中查找包含usage的行
备注:
在Windows或者Unix/Linux下,这些概念,符号是一致的。
MySQL C API的简单应用
作者:淡月清风 日期:2010-08-01
开源MFC扩展界面库:Ultimate Toolbox的编译
作者:淡月清风 日期:2010-07-18
下载地址:
http://www.codeproject.com/KB/MFC/UltimateToolbox.aspx
出现编译错误的文件:
OXHTMLParser.cpp
OXParser.cpp
OXPhysicalEditEx.cpp
OXQuickString.cpp
出错的原因乍看起来是字符串的引号不配对,实际上是因为Ultimate Toolbox的源码文件
都是WINDOWS-1252编码的,且文件中包含编码是0xA0的字符,这些字符无法在中文操作系
统下的VC++编辑器中正常显示。
解决方法是将这几个文件的编码转换为UTF-8,或者将“区域和语言选项”
中“非Unicode程序的语言”改为“英语-美国”。






