这里说的解析命令行参数,并不是说类似getopt的解析函数,而是说win平台的命令行参数是按什么规则传入程序的。前两天我写了个命令行的程序,程序对根目录的处理总是有问题。经过跟踪,发现当输入参数是(”D:\”)的时候,实际程序读到的参数是(D:”)。在路径的两端加上引号,是为了让路径名称中出现空格的时候不会作为参数分隔符处理。可是显然最后一个引号被\转移为 ” 了。
求助于MSDN,终于找到了命令行解析的规则,原文链接:http://msdn2.microsoft.com/en-us/library/aa243471.aspx。这里我做一下翻译:
- 参数用空格或者TAB进行分割。
- 一个字符串若被两个双引号包含,则即使其中包含空格或TAB字符也会被视为一个参数。被引起来的字符串可以嵌入参数内。
- 字符串中存在的双引号可以通过前置反斜杠进行转义。
- 反斜杠会被解释成单个字符,除非后面紧接着一个双引号。
- 如果偶数个反斜杠后面跟随一个双引号,每对反斜杠放一个反斜杠到参数中,双引号被解释为一个字符串界定符。
- 如果奇数个反斜杠后面跟随一个双引号,每对反斜杠放一个反斜杠到argv数组中,双引号则被剩下的反斜杠转义放入到argv中,而不会作文字符串界定符。
这里有几个例子,一看就明白了:
| Command-Line Input |
argv[1] |
argv[2] |
argv[3] |
| “a b c” d e |
a b c |
d |
e |
| “ab\”c” “\\” d |
ab”c |
\ |
d |
| a\\\b d”e f”g h |
a\\\b |
de fg |
h |
| a\\\”b c d |
a\”b |
c |
d |
| a\\\\”b c” d e |
a\\b c |
d |
e |
31
01月
引自:http://dev.csdn.net/article/84/84807.shtm
UE的正则表达式语法 (UltraEdit Syntax)
- % 匹配行首 - 表明要搜索的字符串一定在行首.
- $ 匹配行尾 - 表明要搜索的字符串一定在行尾
- ? 匹配除换行符外的任一单个字符.
- * 匹配任意个数的字符出现任意次数(不包括换行符)
- + 匹配前导字符或者表达式出现一次或者更多次(不包括换行符)
- ++ 匹配前导字符或者表达式不出现或者出现一次以上(不包括换行符)
- ^b 匹配页中断符
- ^p 匹配DOS文件的换行符
- ^r 匹配MAC文件的换行符(CR Only)
- ^n 匹配UNIX文件的换行符 (LF Only)
- ^t 匹配一个制表符
- [ ] 匹配方括号中的单个的字符
UE的常用替换语句
- 删除空行: 替换 %[ ^t]++^p 为 空串
- 删除行尾空格: 替换 [ ^t]+$ 为 空串
- 删除行首空格: 替换 %[ ^t]+ 为 空串
- 每行设置为固定的4个空格开头: 替换 %[ ^t]++^([~ ^t^p]^) 为 ” ^1″
- 每段设置为固定的4个空格开头: 替换 %[ ^t]+ 为 ” ”
- 将一段合并为一行: 替换 [ ^t]++^p^([~ ^t^p]^) 为 ^1
- (注意: 此处假定文本是以DOS方式回车换行 - CR/LF)
- 去掉HTML TAG: 替换 ^{<*>^}^{<*^p*>^} 为 空串
- 删除HTML中的所有<A>: 替换 <[ ]++a *[ ]++href[ ]++=*> 为 空串
- 删除文本中指定的前2列字符: 替换 %?? 为 空串
- 在第4列后插入2列空白字符: 替换 %^(????^)^(?^) 为 “^1 ^2″
- 查找所有的数字: [0-9]+[.]++[0-9]+
- 查找所有的单词: [a-z]+
- 查找所有的网址: http://[a-z0-9^~`_./^-^?=&]+
- 注意: 替换的时候需要勾选使用正则表达式选项
30
01月
优点
- 方便:只需要手机和数据线即可,手机有信号的地方就可以上网,回到老家也可以啦,呵呵。
- 便宜:便宜是相对来说的,只要不进行下载或者图片视频浏览,而且也只是偶尔才用一下,那是用不了多少的。俺在北京,5元包10M流量,包括了cmnet和cmwap。
- 漫游:漫游不需要花钱哦,像随意行之类漫游都是需要额外收费的,或者有少量的赠送。
缺点
- 价格贵:矛盾了,呵呵,5元才10M,一不小心就会超掉哦,超出的部分1分钱/1k流量,10M就是100块钱,很可观的哦。俺有一次没包月的情况下用了1.8M,近50块钱就没了,心疼……
- 网速慢:信号好也就10k/s,想下载东西,甭想啦,多打开些网页都不行。
- 不稳定:偶尔会掉线,和手机信号有很大关系的。
总的来说如果只是偶尔在没有宽带的地方收发邮件、看看新闻等,10M也已经足够消费了。
设置步骤
俺用的是黑莓手机7100T,笔记本的系统是英文版的XP,用黑莓手机上网的步骤如下:
- 修改Standard Modem的属性
- 打开Extra Settings,在Extra initialization commands输入框内填入 at+cgdcont=1,”ip”,”cmnet” ,保存。
- 路径是:Control Panel -> Phone and Modem Options -> Modems -> Standard Modem -> Properties -> Advanced -> Extra Settings。
- 创建网络连接,由Network Connections 进入 New Connection Wizard,接着根据提示一步步进行如下选择:
- Connect to the Internet.
- Set up my connection manually.
- Connect using a dial-up modem.
- Select a Device.
- Connection Name, ISP Name = BlackBerry
- Phone Number to Dial, Phone number = *99***1#
- Connection Availability, I choose Anyone’s use.
- Internet Acount Infromation, User name is cmnet and password left empty, don’t make it as the default internet connection.
注
- 错误718:是因为Distributed Link Tracking Client 服务没有启动,启动之后即可消除。
参考资料
14
01月