C++的实现
#include<fstream>
#include <iostream>
using namespace std;
int main()
{
ofstream logTest("foo.log");
streambuf *oldbuf = cout.rdbuf(logTest.rdbuf());
cout << "输出到标准输出,但实际输出到了foo.log文件中\n";
logTest << "输出到文件,虽然将cout重定向到了log,但不影响log本身的使用\n";
// 恢复流缓冲区
cout.rdbuf(oldbuf);
cout << "输出到标准输出\n";
getchar();
}
C的实现
#include <ios>
#include <iostream>
#include <fstream>
//若使用包含.h文件方式则编译报错
using namespace std;
void main()
{
ofstream ofs("e:\\a.txt");
streambuf *osb = cout.rdbuf(ofs.rdbuf( ......
2010-04-09
第十四章 预处理器
1、#define 替换
在程序中扩展#define定义符号和宏时,需要涉及几个步骤;
①、在调用宏时,首先对参数进行检查,看看是否包含了任何由#define定义的符号,如果是,它们首先被替换;
②、替换文件随后被插入到程序中原来文件的位置,对于宏,参数名被他们的值替代;
③、最后,再次对结果文本进行扫描,看看它是否包含了由#define定义的符号,如果是,就重复上述处理过程;
2、宏参数和#define定义可以包含其他#define定义的符号,但是宏不可以出现递归;
3、#define PRINT( FORMAT, VALUE ) \
printf( "the value of "#VALUE" is "FORMAT" \n", VALUE )
4、宏与类型无关
5、下面的执行结果:
#define MAX( a, b ) ( (a) > (b) ? (a) : (b) )
z = MAX( x++, y++ ); (其中x = 5;y = 8)
结果:x = 6;y = 10;z = 9;
原因:z = ( (x++) > (y++) ? (x++) : (y++));
6、#undef (预处理指令,用于移除一个宏定义)
7、条件编译:在编译一个程序时,如果我们可以选择某条语句或某组语句,进行翻译或者被忽略,常常显得很方便。只用于调 ......
HTTP分为请求行,请求头部以及请求内容
那个长度数字值就是请求内容的长度(字节为单位)
给一段例子你就基本明白了:
onst CString getString(int i)
{
CString s;
s.Format(_T("%d"), i);
return s;
}
////////////////////////////////
CString cnt;
CString psr;
cnt.Append(_T("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"));
cnt.Append(_T("<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-
instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"
xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">\r\n"));
cnt.Append(_T("<soap12:Body>\r\n"));
cnt.Append(_T("<CelsiusToFahrenheit xmlns= ......
//来源不详
1. 绝对宏:
在程序中,用“#include<absacc.h>”即可使用其中定义的宏来访问绝对地址,包括CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD
具体使用可看一看absacc.h便知,例如:
rval=CBYTE[0x0002];指向程序存贮器的0002h地址
rval=XWORD[0x0002];指向外RAM的0002h地址
2. _at_关键字
直接在数据定义后加上_at_ const即可,但是注意:
(1)绝对变量不能被初使化;
(2)bit型函数及变量不能用_at_指定。
例如:
idata struct link list _at_ 0x40;指定list结构从40h开始。
xdata char text[25b] _at_0xE000;指定text数组从0E000H开始
提示:如果外部绝对变量是I/O端口等可自行变化数据,需要使用volatile关键字进行描述,请参考absacc.h。
例:
比如,我想让数组myarr[0x30]的起始地址从物理地址0x00800开始,何如?
用指针显然不安全, 请教如何通过预编译指令或者RAM段配置来实现?
unsigned char xdata mayarr[30] _at_0x0800
......
#include<stdio.h>
#include<regex.h>
int main(int argc, char** argv)
{
if(IsLegalPage("http://www.baidu.com"))
printf("该网页合法\n");
else printf("该网页不合法!!!\n");
return 0;
}
/* 函数说明:判断网页是否合法
* 输入参数:需要判断的网址
* 返回结果:网页是否合法(合法1,不合法0)
*/
int IsLegalPage(char* s_tmp)
{
char* pattern="(https?)://.*(\.cn|\.com|\.htm|\.html|\.aspx?|\.jsp|\.php|/|/#)$";
printf("pattern=%s\n",pattern);
int z=0;
regex_t reg;
regmatch_t pm[1];
z=regcomp(®,pattern,REG_EXTENDED|REG_ICASE);
z=regexec(®,s_tmp,1,pm,0);
if(z!=0)
return 0;
else
return 1;
regfree(®);
}
......
#include<stdio.h>
#include<regex.h>
int main(int argc, char** argv)
{
if(IsLegalPage("http://www.baidu.com"))
printf("该网页合法\n");
else printf("该网页不合法!!!\n");
return 0;
}
/* 函数说明:判断网页是否合法
* 输入参数:需要判断的网址
* 返回结果:网页是否合法(合法1,不合法0)
*/
int IsLegalPage(char* s_tmp)
{
char* pattern="(https?)://.*(\.cn|\.com|\.htm|\.html|\.aspx?|\.jsp|\.php|/|/#)$";
printf("pattern=%s\n",pattern);
int z=0;
regex_t reg;
regmatch_t pm[1];
z=regcomp(®,pattern,REG_EXTENDED|REG_ICASE);
z=regexec(®,s_tmp,1,pm,0);
if(z!=0)
return 0;
else
return 1;
regfree(®);
}
......
也是中软笔试的算法题,当时并不知道叫杨辉三角,唉。N年不用了,还得再拾起,为了那个梦。
#include <stdio.h>
void main()
{
int a[50][50];
int i,j,n;
printf("Please input Number:");
scanf("%d",&n);
for (i=0;i<n;i++)
{
for (j=0;j<=i;j++)
{
if (j==0 ||j==i)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
printf("%5d",a[i][j]);
}
&nbs ......