Sunday, April 12, 2009

暂时停博...

一段时间没写了, 很多人有问...
主题修改到一半, 怎么没动静了呢? 连博也不发了.
<--more--!>
不发博因为, 最近没有搞开发, 这个是很有意思的事情. 因为是技术博客嘛, 没有搞新技术, 自然没有东西可以发.
为什么最近没有搞开发呢?

前段时间报了某公司的实习, 笔试之后, 觉得希望渺茫.
但是说实话, 除了那个公司, 别的地方都不想去 (应该就是传说中的高不成低不就) ... 但是去不成怎么办呢? 总不能毕业后在家带着吧... 于是我想到了考研.

考研是需要准备的, 于是我就在考研复习...~

bin32.com最近也遇到一些问题, 有计划在暑假之前进行一次商业性的转移, 这边的虚拟主机实在是让人觉得... 说什么都没用.

Monday, April 6, 2009

tchar 输入输出类 和 string 类 函数简单说明

副标题: 寻找迷失的 wsscanf

wsprintf详细很多人用过, 但是没有wsscanf, 为什么呢? 感觉这样是完全不合理的~.
过去我不得不使用WideCharToMultiByte之类的函数对其进行转化. 网上很多人也是这么介绍的. 其实我们错了~ 知道我研究了一下tchar.h, 才明白为什么.

以下函数均在tchar.h中定义, 只是列举了常见的几个~
如果需要特殊功能的函数建议研究一下tchar.h~ 里面的函数实在是太多太多, 很多苛刻的需求都能满足.~

标准输入输出
printf类
_tprintf : 类同printf
_tprintf_l : 类同printf, 但是"_l"表示第二个参数是一个locale.
locale是操作系统对语言设定的参数, 这个会影响ANSI字符的语言识别, 在Unicode下应该是无差别的
_tprintf_s : 类图printf, 但是和_tprintf相比, _tprintf_s多会做一些检查工作.
如果你的"format string"是动态的, 这个能帮助你.
_tprintf_s_l  : 前两者功能相加
_tprintf_p : 这个用法有点特别, 不过有个例子, 一看就明白
_tprintf_p(TEXT("%1$d times %1$d is %2$d"), 10, 100);
10 times 10 is 100
_tprintf_p_l : _p和_l相加
_tcprintf : 多个一个c, 表示输出到终端~ 要知道标准输入输出不一定是到终端的~
_tcprintf_l _tcprintf_s _tcprintf_p _tcprintf_p_l 就去类比~
_ftprintf : f表示输出到文件
_ftprintf_l ... 去类比
_stprintf : s表示输出到string
_stprintf_l ... 去类比
_sctprintf ... (这里用...表示一堆 _l _p 的函数, 下同)
哈哈, c表示终端, s表示string~ 那到底输出到哪里呢~ 哈哈~
其实_sc表示string count 这个函数不输出~ 只是算算输出的长度~
_tprintf(TEXT("String Length of %d is %d"), 100, _sctprintf(TEXT("%d"), 100));
String Length of 100 is 3
_sntprintf ... : 没啥区别, 有个参数限定输出长度
_v ... ...
_v的太多, 前面的每个函数都有一个_v版本, 它们有个共同特点, 就是最后一个参数是一个特殊的list的指针.

printf类有这么多, 来简单总结一下前缀和后缀~
前缀
_t 没的说
_ft 输出到文件
_st 输出到string
_sct 算下长度, 不输出
_snt 输出到string, 还限定长度
_v 用参数的list的指针来表示参数

后缀
_p 可以用数字表示参数
_l 可以值得locale
_s 多了一些检查

scanf类和printf类类似, 但是没有_v类

剩下来的函数基本上都类似, 大多数能够在c的标准库中找到类似的函数.
每一类中我只举几个典型的函数, _l 和_s后缀是经常可以用的~

get 和 put:
_gettc 我要get一个char
_getts 我要get一个string
_puttc, _putts类似

_gettch 我从终端来一个char
_cgetts 我从终端来一个string
_gettche 我从终端来一个char, 顺便输出
_fgettc 我从文件来个char~

string 向数值转换
_tstof string变浮点
_tstol string变长整
_tstoi string变整数
_itot 整数变string

string函数
_tcscat strcat
_tcsncat strncat
_tcscpy strcpy
_tcsncpy strncpy
_tcslen strlen
_tcscmp strcmp
_tcsncmp strncmp