C / C++
文章平均质量分 51
zhujiangm
...
展开
-
utf8字符串转8进制字符串(c++)
std::string strOct; char tmp[1024] = {0}; for (int i = 0; i < strxx.length(); i++) { int b1 = strxx.at(i); if (b1 < 0) { b1 = 256 + b1; sprintf(tmp, "\\%d%d%d", (b1 / 64) % 8, (b1 / 8) %...原创 2020-12-17 13:51:35 · 519 阅读 · 0 评论 -
qt keyPressEvent函数方向键没有响应键盘事件的解决方法
某段程序中发现重载keyPressEvent后不能收到方向键的响应。查看qt说明文档:This event handler, for event event, can be reimplemented in a subclass to receive key press events for the widget.A widget must call setFocusPolicy() to...原创 2019-06-03 23:04:38 · 10576 阅读 · 3 评论 -
C / C++ 误区之四: char c = getchar();
许多初学者都习惯用 char 型变量接收 getchar、getc,fgetc 等函数的返回值,其实这么做是不对的,并且隐含着足以致命的错误。getchar 等函数的返回值类型都是 int 型,当这些函数读取出错或者读完文件后,会返回 EOF。EOF 是一个宏,标准规定它的值必须是一个 int 型的负数常量。通常编译器都会把 EOF 定义为 -1。问题就出在这里,使用 char 型原创 2008-01-07 23:50:00 · 1094 阅读 · 0 评论 -
搞笑的中文 C++ 编程
#define 趁还 while #define 那个啥 int #define 总的来说 main #define 买 cin #define 卖 cout #define 进 >> #define 出 #define 拜拜了 return #define 去掉 -= #define 等于 = #define 屁 100e4 #define 我说 ( #define 是吧 ) #define 啊原创 2007-12-27 22:45:00 · 1786 阅读 · 0 评论 -
C / C++ 误区之三:强制转换 malloc() 的返回值
首先要说的是,使用 malloc 函数,请包含 stdlib.h(C++ 中是 cstdlib),而不是 malloc.h 。因为 malloc.h 从来没有在 C 或者 C++ 标准中出现过!因此并非所有编译器都有 malloc.h 这个头文件。但是所有的 C 编译器都应该有 stdlib.h 这个头文件。 在 C++ 中,强制转换 malloc() 的返回值是必须的,转载 2007-12-27 22:39:00 · 795 阅读 · 1 评论 -
c / c++ 误区之二 fflush(stdin)
1. 为什么 fflush(stdin) 是错的 首先请看以下程序: #include int main( void ){ int i; for (;;) { fputs("Please input an integer: ", stdout); scanf("%d", &i); print转载 2007-12-13 20:49:00 · 1246 阅读 · 0 评论 -
c / c++ 误区之一 void main()
市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main( ) { /* ... */ } is not and never has been C++, nor has it e转载 2007-12-13 20:46:00 · 1409 阅读 · 0 评论 -
使用 vector erase 指定元素
#include "iostream"#include "vector"using namespace std;int main(){ vector arr; arr.push_back(6); arr.push_back(8); arr.push_back(3); arr.push_back(8); for(vector::iterator it=ar原创 2007-12-03 17:31:00 · 1829 阅读 · 0 评论 -
C/C++ 误区之五:检查 new 的返回值
我们都知道,使用 malloc/calloc 等分配内存的函数时,一定要检查其返回值是否为“空指针”(亦即检查分配内存的操作是否成功),这是良好的编程习惯,也是编写可靠程序所必需的。但是,如果你简单地把这一招应用到 new 上,那可就不一定正确了。我经常看到类似这样的代码: int* p = new int[SIZE]; if ( p == 0 ) // 检原创 2008-02-23 12:31:00 · 1144 阅读 · 0 评论 -
各种语言的 Hello world 程序
1. Adawith Ada.Text_IO;procedure Hello isbegin Ada.Text_IO.Put_Line("Hello World!");end Hello;2. ALGOL68/begin/print("Hello World!")/end/3. AmigaEPROC main() WriteF(/Hello World!/)ENDPROC4.转载 2007-11-20 17:05:00 · 2893 阅读 · 0 评论 -
C++ 运算符优先级和结合性(MSDN)
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"DefSemiHidden="true" DefQFormat="false" DefPriority="99"LatentStyleCount="267"><w:LsdException Locked="f原创 2007-11-17 17:32:00 · 1707 阅读 · 0 评论 -
字符串 KMP 算法
#include using namespace std; void fail(string & s, int f[]);int fastFind(string &src,string &pat,int *fail); /*fail[i] = k (0且满足P[0]P[1]……P[k] = P[i-k]P[i-k+1]……P[i] 的最大整数)原创 2007-11-15 15:07:00 · 788 阅读 · 0 评论 -
ios_base typedef 成员与值的对照表
fmtflags:ios_base::skipws = 0x1 = 1ios_base::unitbuf = 0x2 = 2ios_base::uppercase = 0x4 = 4ios_base::showbase = 0x8 = 8ios_base::showpoint = 0x原创 2007-10-16 22:52:00 · 1615 阅读 · 0 评论 -
向上类型转换
向上类型转换(Upcasting):将派生类的引用或指针转换成基类引用或指针.删除共享文档HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/MyComputer/NameSpace/DelegateFolders/ 删除:{59031a47-3f72-44a7-89c5-5595fe6b30ee原创 2007-09-30 21:51:00 · 777 阅读 · 0 评论 -
基类和成员的访问权限(msdn)
成员访问控制 访问类型 含义 private转载 2007-09-12 10:52:00 · 1046 阅读 · 0 评论 -
函数调用与名称修饰
一、函数调用的几个概念_stdcall,_cdecl,…… 左通过栈传递,被调用的函数在返回前清理传送参数的内存栈,但不同的是函数名的修饰部分(关于函数名的修饰部分在后面将详细说明)。1. _stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上“@转载 2007-09-08 09:47:00 · 854 阅读 · 0 评论