LIST

list

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  1 随笔 :: 0 文章 :: 1 评论 :: 0 Trackbacks
舍弃精华,拥抱糟粕,闲得蛋疼啊!通读博文和评论得出的结论是坚定不移地使用大师经典sprintf!
哇,这效果真炫!!
re: KMP算法祥解[未登录] TOM 2013-03-30 01:37
第二种求串的函数有错 下面的语句
if(k!= -1 && pattern[k]!= pattern[j] )

应该改为
while(k!= -1 && pattern[k]!= pattern[j] )

楼主可以试试
abdabaabdabbe这个数据 第一种串函数的才是正确的
当有两个holes的时候,填充还是会有错误,呵呵
看了你的Demo,非常好啊,请教下用的是那个算法啊,谢谢,tom.cat@163.com
干嘛要用绿色的背景啊,眼睛都看花了。哎。
re: C++杂谈[未登录] tom 2011-07-12 12:13
@pangzi
"auto_ptr<int*>,细节是魔鬼"
You are the best!
- construct a set S
- for each element in vector
insert it into S
if fails, remove element
为什么不调用C Runtime比如itoa()之类,然后对字符串进行操作?
@楼主,
我说的就是这个意思,除非有中国人在C++ committee 里推动,这个事情的优先级不会太高。所以在c++03的基础上支持UNICODE还会是较长时间里的现实。
这也是我前面的建议的前提。
@空明流转, Windows不UCS已经很多年了。
See here:
“UTF-16 is used for the native internal representation of text in Microsoft Windows 2000/XP/2003/Vista/CE.[7]”

Cited from http://en.wikipedia.org/wiki/UTF-16/UCS-2.

@陈良乔
新标准C++11已经开始从标准的层面对unicode提供的支持,还是纸面上的,无论GCC还是VC++都还没实现,Clang不清楚。在可以预见的的将来这不是优先工作,毕竟这玩意儿涉及到某种“种族歧视”(不记得哪篇UNICODE的介绍文章里提到过):说英语的人对UNICODE的需求远小于我们。更现实的情况是:现有的API不可能用C++1x改写,我们还得跟这些legacy code交互多年。

再说一句,这本是算是一本真正的关于C++书,希望这种书越来越多。
买了一本捧场,作为国内原创,值得鼓励,很值得鼓励。而且内容与时俱进。

说说缺点。类似
cout << "中文内容";
应该写成
wcout << L"中文内容";
这对于我们中文使用者才是正确的做法。包括basic_string<T>在内,都应该鼓励采用wchar_t形式。今天的世界,任何字符串信息都应该采用UNICODE.

在c++标准支持unicode之前,wchar_t是Windows平台上最近似默认的UTF-16的做法,不仅提高效率(因为不须在内部再转换),更重要的,减少字符串相关算法的潜在错误。

Unix上UTF-8流行,另说。

考虑到此书提到ppl,侧重Windows平台。应当提倡正确的编码风格,尤其对非英文软件编写的程序员。
单元的定义是可以因人因系统而异的。一个全新的应用,当然可以以函数或类位单元。对于旧系统以一个易于定义的,稳定的功能单元来作为基本单位测试,先把他框住。有必要再深入撕扯重构,未尝不可。

在我看来,单元测试最大的意义在于为以后的更改做准备,最大限度保证功能是递增的,不会在引入新功能的情况下意外牺牲已有的功能。

不过我一般用Boost.Test。
采用16进制传输的时候,解包成ascii A0变成20???B0变成30?
1. XP以后的平台(含XP)COM是可以免注册的,Win7等微软自己新写的COM很多就采用这种方式了,基本原理就是自带干粮,manifest file.
2. 跨编译器的导出C++ class的方式,一般是DLL采用Singleton模式编写,导出C指针。Codeproject上有一篇文章讲这个 (http://www.codeproject.com/KB/cpp/howto_export_cpp_classes.aspx)
3.如果有兴趣或者是没兴趣(只想用用)可以看看boost.extension.注意这个还不是标准的boost库成员。也没被提交review过。
@空明流转,
我可没冒犯楼主的意思,闻道有先后而已。
tokenizer<>是按string的traits来分割的,也就是说“隐含的意思“是只能用来分割用ISO/IEC 8859-1字符集的,中文如"猫 狗 猪"肯定不是。

所以你要么用支持特定编码的第三方库(utf-cpp),这样来增加string的编码支持功能;要么用wstring达到理论上不完备,但现实上不大可能出错的效果(限于Windows). C++的basic_string<CharT>是不包含任何编码功能的,也就谈不上对文本的语义断开了。所以你的看到的结果其实是C++意义上正确的,而在中文语义上错误了。因此是你误用工具,不是boost库或C++语言的错。

关键的知识点在于,任何文本一定是有编码的,每次你用到文本,你总是接受了某种隐含的假设,只是你可能没意识到。除非你只写英文版软件,你可以假装编码不存在。

你的例子刚好说明,你必须要掌握的编码的相关知识。
你的使用方法是错误的.应该使用wstring, 与 L"猫 狗 猪". 建议学习一下有关UNICODE等编码相关知识,以及C++的相关支持方式。基本上,除非你的母语是English也只给English people写程序,encoding相关的知识是绕不开的,早晚要掌握。
试过std::bitset没?可以用int直接构造,再循环调用std::bitset::test()测试每一位就齐活。
memory 就一数组啊
用BOOST_FOREACH更好点,使用的是ISO标准C++。VC那是CLI扩展,非ISO标准.
学习
memory alignment@路人甲
我想买,加我qq,你们群满了64031410
Did you try boost.filesystem? It providesa convenient directory iterator(as easy as like walk() in python) and supports wide characters well
学习到了一些,多谢~~~