摘要: C++用 ifstream 声明输入文件对象,用 ofstream 声明输出文件对象。getline的使用:(感觉有点像孔乙己的茴香豆的 茴 的写法了)#include<iostream>#include<fstream>#include<string>using namespace std;int main(){ ifstream infile("getline.txt",ios::in | ios::binary); char buf1_1[30]; string buf1; char buf2[30]; ///注意这里getline 阅读全文
posted @ 2012-05-18 20:14 KingsLanding 阅读(4103) 评论(0) 推荐(0) 编辑
摘要: Linux环境下:/**struct timeval { time_t tv_sec; // 秒 suseconds_t tv_usec; // 微妙 (10的负六次方)}; typedef struct timespec{time_t tv_sec;//秒long tv_nsex;//纳秒}timespec_t;**/#include <algorithm>#include <vector>#include <stdio.h>#include <stdlib.h>#include <sys/time.h>double getTime 阅读全文
posted @ 2012-05-17 23:37 KingsLanding 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 今天在QQ群中有人问起这两个问题,我只是在oneNote中做过笔记,也不是很熟,只不过oneNote的搜索功能太难用了。觉得这些基本功问题还是要熟悉才好。首先是格式转换,什么浮点数转换为字符串,字符串转换为浮点数,建议使用C++ 的字符处理类,stringstream,在exceptional C++中好像说过sprintf什么的不是很安全。下面来看例子:#include <sstream>#include <iostream>using namespace std;int main() stringstream ss; double a = 3.141592; dou 阅读全文
posted @ 2012-05-17 23:32 KingsLanding 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://coolshell.cn/articles/3643.html想更深入的学习GDB调试程序可以学习陈皓老师的:用GDB调试程序七、八年前写过一篇《用GDB调试程序》,于是,从那以后,很多朋友在MSN上以及给我发邮件询问我关于GDB的问题,一直到今天,还有人在问GDB的相关问题。这么多年来,有一些问题是大家反复在问的,一方面,我觉得我以前的文章可能没有说清楚,另一方面,我觉得大家常问的问题正是最有用的,所以,在这里罗列出来。希望大家补充。一、多线程调试多线程调试可能是问得最多的。其实,重要就是下面几个命令:info thread 查看当前进程的线程。 thread < 阅读全文
posted @ 2012-05-13 22:25 KingsLanding 阅读(353) 评论(0) 推荐(0) 编辑
摘要: 一:列文件清单1. List(gdb) list line1,line2二:执行程序要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符(<和>)和外壳通配符(*、?、[、])在内。如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的参数,这是很有用的。利用set args 命令就可以修改发送给程序的参数,而使用show args 命令就可以查看其缺省参数的列表。(gdb)set args –b –x(gdb) show argsbacktrace命令为堆栈提供向后跟踪功能。Backtrace 命令产生一张 阅读全文
posted @ 2012-05-13 22:17 KingsLanding 阅读(1270) 评论(0) 推荐(0) 编辑
摘要: 接上一篇:使用 GNU 的 GDB调试器,内存布局和栈 —— 01原文地址:http://www.dirac.org/linux/gdb/02a-Memory_Layout_And_The_Stack.php符号表 一个符号就是一个变量或者一个函数。符号表如你所想:就是在可执行文件中的一个包含变量和函数的表。 正常情况下符号表只包含符号的地址,因为计算机不使用我们给变量或者函数起的名字。 为了让GDB对我们来说有用,有必要能够通过变量或者函数名来引用变量,而不是使用它们的地址。人类使用的是诸如“main()”或者“i”。 计算机使用如0x804b64d 或0xbffff784 之类的地址。因为 阅读全文
posted @ 2012-05-13 21:51 KingsLanding 阅读(1591) 评论(0) 推荐(0) 编辑
摘要: 使用 GNU 的 GDB调试器,内存布局和栈原文地址:http://www.dirac.org/linux/gdb/02a-Memory_Layout_And_The_Stack.php我们会学些什么? 为了更高效的学习使用GDB,你必须了解帧,通常也成为栈帧,因为帧构成了栈。为了学习栈,我们需要了解可执行文件的内存布局。这里的讨论主要都是理论上的,但是为了使学习比较有趣,在本章结束之前我们将通过GDB来展现栈和栈帧的例子。 本章学习的东西似乎相当的理论化,但是对于达到以下目的来说却是非常有用的:1. 理解栈对于使用GDB调试器是绝对有必要的2. 了解一个进程的内存布局有助于我们理解什么是段错 阅读全文
posted @ 2012-05-13 21:49 KingsLanding 阅读(2141) 评论(0) 推荐(0) 编辑
摘要: #include <algorithm>#include <vector>#include <stdio.h>#include <stdlib.h>#include <time.h>#include <windows.h>using namespace std;#define SIZE 1024 * 1024 * 1024int main(){LARGE_INTEGER start; LARGE_INTEGER end; LARGE_INTEGER freq; QueryPerformanceFrequency(& 阅读全文
posted @ 2012-05-13 12:35 KingsLanding 阅读(227) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>int main(){ int b = 3; int arr[] = {6,7,8,9,10}; int *ptr = arr; *(ptr++) += 123; //printf("%d,%d\n", *ptr, *(++ptr)); //输出:8,8 printf("%d,%d\n", *ptr, *(ptr++));//输出:8,7 return 0;}_cdecl 压栈方式是从右到左更加明显的例子:#include<stdio.h>int main(){ int a = 5, b = 7; 阅读全文
posted @ 2012-05-12 19:41 KingsLanding 阅读(530) 评论(0) 推荐(0) 编辑
摘要: 系统调用接口往往是通过中断来实现,比如Linux使用0x80号中断作为系统调用的入口,Windows采用0x2E号中断作为系统调用的入口。EAX名字C语言定义含义参数1exitvoid _exit(int status)退出进程EBX表示退出码2forkpid_t fork(void)复制进程EBX表示复制参数3readssize_t read( int fd,void *buf,size_t count)读文件EBX表示文件句柄,ECX表示读取缓冲地址,EDX表示读取的大小4writessize_t write( int fd,const void *buf,size_t count);写. 阅读全文
posted @ 2012-05-11 21:51 KingsLanding 阅读(1540) 评论(0) 推荐(0) 编辑