解析命令行参数规则 (Parsing C Command-Line Arguments)

这里说的解析命令行参数,并不是说类似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
Posted by 王永杰 in C&C++, 技术为本 - Comments (0)
31 01月

在UltraEdit中使用正则表达式

引自: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^~`_./^-^?=&]+
  • 注意: 替换的时候需要勾选使用正则表达式选项
Posted by 王永杰 in 技术为本, 文摘转贴 - Tags: - Comments (0)
30 01月

用手机当猫通过GPRS拨号上网

优点

  1. 方便:只需要手机和数据线即可,手机有信号的地方就可以上网,回到老家也可以啦,呵呵。
  2. 便宜:便宜是相对来说的,只要不进行下载或者图片视频浏览,而且也只是偶尔才用一下,那是用不了多少的。俺在北京,5元包10M流量,包括了cmnet和cmwap。
  3. 漫游:漫游不需要花钱哦,像随意行之类漫游都是需要额外收费的,或者有少量的赠送。

缺点

  1. 价格贵:矛盾了,呵呵,5元才10M,一不小心就会超掉哦,超出的部分1分钱/1k流量,10M就是100块钱,很可观的哦。俺有一次没包月的情况下用了1.8M,近50块钱就没了,心疼……
  2. 网速慢:信号好也就10k/s,想下载东西,甭想啦,多打开些网页都不行。
  3. 不稳定:偶尔会掉线,和手机信号有很大关系的。

总的来说如果只是偶尔在没有宽带的地方收发邮件、看看新闻等,10M也已经足够消费了。

设置步骤

俺用的是黑莓手机7100T,笔记本的系统是英文版的XP,用黑莓手机上网的步骤如下:

  1. 修改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。
  2. 创建网络连接,由Network Connections 进入 New Connection Wizard,接着根据提示一步步进行如下选择:
    1. Connect to the Internet.
    2. Set up my connection manually.
    3. Connect using a dial-up modem.
    4. Select a Device.
    5. Connection Name, ISP Name = BlackBerry
    6. Phone Number to Dial, Phone number = *99***1#
    7. Connection Availability, I choose Anyone’s use.
    8. 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 服务没有启动,启动之后即可消除。

参考资料

Posted by 王永杰 in 网络应用 - Comments (0)
14 01月