??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美久久精品一级c片片,精品久久一区二区,欧美日韩中文字幕久久伊人http://www.shnenglu.com/wifecooky/category/13482.html学一点,C?/description>zh-cnMon, 08 Nov 2010 04:45:08 GMTMon, 08 Nov 2010 04:45:08 GMT60关于q行时类型识别typeid http://www.shnenglu.com/wifecooky/archive/2010/11/08/132955.html楚天清秋楚天清秋Mon, 08 Nov 2010 01:23:00 GMThttp://www.shnenglu.com/wifecooky/archive/2010/11/08/132955.htmlhttp://www.shnenglu.com/wifecooky/comments/132955.htmlhttp://www.shnenglu.com/wifecooky/archive/2010/11/08/132955.html#Feedback0http://www.shnenglu.com/wifecooky/comments/commentRss/132955.htmlhttp://www.shnenglu.com/wifecooky/services/trackbacks/132955.html在程序中Q当我们对多态类的基cL针用typeidQ就可以在运行时定指针指向对象的实际类型,q输出对象类型的名字?/p>
#include  < cstdlib > 
#include  
< iostream > 
#include  
< typeinfo > 
using   namespace  std;

class  B{
public :
     
virtual   void  fun(){}
}
;

class  D: public  B{
public :
     
void  fun(){}
}
;

int  main()
{
    B  
* p;
    D ob;
    p 
=& ob;
    cout 
<< " typeid(*p).name()= " << typeid( * p).name() << endl;
     
if (typeid( * p) == typeid(D))
        cout 
<< " typeid(*p)==typeid(D) " << endl;
    cout 
<< " typeid(p).name()= " << typeid(p).name() << endl;
     
if (typeid(p) == typeid(B * ))
        cout 
<< " typeid(p)==typeid(B*) " << endl;
    system( 
" pause " );
     
return   0 ;
}


q段code在VC++6.0中编译时Q提C如?br>warning C4541: 'typeid' used on polymorphic type 'class B' with /GR-; unpredictable behavior may result
~译后运行时错误。不知是不是此版本的VC++不符合C++标准Q?br>
在DevcppQg++Q中~译q行得到的结果是
typeid(*p).name()=1D
typeid(*p)==typeid(D)
typeid(p).name()=P1B
typeid(p)==typeid(B*)
说明用typeid作用?p得到的的是DcdQ而用typeid作用于p得到的依然是Bcȝ指针cd

如果typeid被作用于非多态类指针Q那么我们得到的是指针被声明的类型,也就是说Q此时typeidq不会返回指针所指向对象的实际类型?br>如果class B中的virtualLQ在~译q行得到的结果是
typeid(*p).name()=1B
typeid(p).name()=P1B
typeid(p)==typeid(B*)

由此可见Q在M时刻都可以用基类指针指向zcd象,而用typeid(*p)定p指向的对象时Q只当基cMؓ多态类时才能真正确定p在运行时指向的实际类型?br>
VC默认不启动RTTIQ即“q行时期cd识别”Q如果在你的E序用到了RTTIQ比如typeidQ你必须明确告诉~译器启动RTTIQ这样VC才能正确~译
选择菜单Project->settings->c/c++->category->c++ language,Enable Run-Time Type Infomation(RTTI)选中


楚天清秋 2010-11-08 09:23 发表评论
]]>
cout重定向到文g (?http://www.shnenglu.com/wifecooky/archive/2010/08/15/123470.html楚天清秋楚天清秋Sat, 14 Aug 2010 16:16:00 GMThttp://www.shnenglu.com/wifecooky/archive/2010/08/15/123470.htmlhttp://www.shnenglu.com/wifecooky/comments/123470.htmlhttp://www.shnenglu.com/wifecooky/archive/2010/08/15/123470.html#Feedback0http://www.shnenglu.com/wifecooky/comments/commentRss/123470.htmlhttp://www.shnenglu.com/wifecooky/services/trackbacks/123470.htmlcout默认是与监视器(屏幕Q相q,cout出来的内容会输出到屏q上Q通常是会在命令行H口之中。但有时Q我们希望将cout出来的具体日志、错误信息写到某个文件之中,而屏q上仅仅昄出当前进行的dQ以及程序运行状态等信息。我们可以用下面重定向的方式来实现Q?/p> 1 #include "stdafx.h"
2 #include <iostream>
3 #include <fstream>
4
5  int main(int argc, char* argv[])
6 {
7     using namespace std;
8
9     cout << "Hello, Let's begin a test of cout to file." << endl;
10     // 保存cout缓冲区指针
11      streambuf* coutBuf = cout.rdbuf();
12
13     ofstream of("out.txt");
14     // 获取文gout.txt缓冲区指针
15      streambuf* fileBuf = of.rdbuf();
16    
17     // 讄cout缓冲区指针为out.txt的流~冲区指?/span>
18      cout.rdbuf(fileBuf);
19     cout << "Name " << "Chen"        << endl;
20     cout << "Sex  " << "Female"      << endl;
21     cout << "E-mail"<< "Chen@qq.com" << endl;
22
23     of.flush();
24     of.close();
25
26     // 恢复cout原来的流~冲区指?/span>
27      cout.rdbuf(coutBuf);
28     cout << "Write Personal Information over..." << endl;
29
30     system("PAUSE");
31     return 0;
32 }

楚天清秋 2010-08-15 00:16 发表评论
]]>
判断两个数组中是否存在相同的数字http://www.shnenglu.com/wifecooky/archive/2010/06/09/117459.html楚天清秋楚天清秋Wed, 09 Jun 2010 04:16:00 GMThttp://www.shnenglu.com/wifecooky/archive/2010/06/09/117459.htmlhttp://www.shnenglu.com/wifecooky/comments/117459.htmlhttp://www.shnenglu.com/wifecooky/archive/2010/06/09/117459.html#Feedback0http://www.shnenglu.com/wifecooky/comments/commentRss/117459.htmlhttp://www.shnenglu.com/wifecooky/services/trackbacks/117459.htmll定两个排好序的数组Q怎样高效得判断这两个数组中存在相同的数字Q?/span>


 O(n)法。因Z个数l都是排好序的。所以只要一ơ遍历就行了。首先设两个下标Q分别初始化Z个数l的起始地址Q依ơ向前推q?。推q的规则是比较两?数组中的数字Q小的那个数l的下标向前推进一步,直到M一个数l的下标到达数组末尾Ӟ如果q时q没到相同的数字,说明数组中没有相同的数字?br>
bool findcommon(int a[], int size1, int b[], int size2)
{
     
int i=0,j=0;
     
while(i<size1 && j<size2)
     
{
          
if(a[i]==b[j])
               
return true;
          
if(a[i]>b[j])
               j
++;
          
if(a[i]<b[j])
               i
++;
     }

     
return false;
}



楚天清秋 2010-06-09 12:16 发表评论
]]>
点数在计算Z存储方式 http://www.shnenglu.com/wifecooky/archive/2010/06/02/117000.html楚天清秋楚天清秋Wed, 02 Jun 2010 04:17:00 GMThttp://www.shnenglu.com/wifecooky/archive/2010/06/02/117000.htmlhttp://www.shnenglu.com/wifecooky/comments/117000.htmlhttp://www.shnenglu.com/wifecooky/archive/2010/06/02/117000.html#Feedback0http://www.shnenglu.com/wifecooky/comments/commentRss/117000.htmlhttp://www.shnenglu.com/wifecooky/services/trackbacks/117000.html
http://www.cnblogs.com/jillzhang/archive/2007/06/24/793901.html

楚天清秋 2010-06-02 12:17 发表评论
]]>
关于sizeof(c?的大?/title><link>http://www.shnenglu.com/wifecooky/archive/2010/06/01/116933.html</link><dc:creator>楚天清秋</dc:creator><author>楚天清秋</author><pubDate>Tue, 01 Jun 2010 14:09:00 GMT</pubDate><guid>http://www.shnenglu.com/wifecooky/archive/2010/06/01/116933.html</guid><wfw:comment>http://www.shnenglu.com/wifecooky/comments/116933.html</wfw:comment><comments>http://www.shnenglu.com/wifecooky/archive/2010/06/01/116933.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.shnenglu.com/wifecooky/comments/commentRss/116933.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/wifecooky/services/trackbacks/116933.html</trackback:ping><description><![CDATA[<p>#include <iostream.h></p> <p>class A <br>{};</p> <p>class B<br>{};</p> <p><span style="COLOR: #ff0000">class C         //情况1</span><br><span style="COLOR: #0000ff">//class C:public A</span> <span style="COLOR: #0000ff">//情况2<br></span>{<br> virtual void fun()=0;<br>};</p> <p>class D:public B,public C<br>{<br>};</p> <p>int main()<br>{<br> cout<<sizeof(D)<<endl;<br> return 0;<br>}<br></p> 情况1时sizeof(D)?Q?br>情况2时sizeof(D)?Q?br><br>啥原因,谁解释下Q? <img src ="http://www.shnenglu.com/wifecooky/aggbug/116933.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/wifecooky/" target="_blank">楚天清秋</a> 2010-06-01 22:09 <a href="http://www.shnenglu.com/wifecooky/archive/2010/06/01/116933.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> c++虚函数表探究http://www.shnenglu.com/wifecooky/archive/2010/05/10/114986.html楚天清秋楚天清秋Mon, 10 May 2010 05:26:00 GMThttp://www.shnenglu.com/wifecooky/archive/2010/05/10/114986.htmlhttp://www.shnenglu.com/wifecooky/comments/114986.htmlhttp://www.shnenglu.com/wifecooky/archive/2010/05/10/114986.html#Feedback0http://www.shnenglu.com/wifecooky/comments/commentRss/114986.htmlhttp://www.shnenglu.com/wifecooky/services/trackbacks/114986.html  阅读全文

楚天清秋 2010-05-10 13:26 发表评论
]]>
什么是指针(Solmyr 的小品文pd之五Q垃圾收?http://www.shnenglu.com/wifecooky/archive/2010/04/13/112478.html楚天清秋楚天清秋Tue, 13 Apr 2010 09:36:00 GMThttp://www.shnenglu.com/wifecooky/archive/2010/04/13/112478.htmlhttp://www.shnenglu.com/wifecooky/comments/112478.htmlhttp://www.shnenglu.com/wifecooky/archive/2010/04/13/112478.html#Feedback0http://www.shnenglu.com/wifecooky/comments/commentRss/112478.htmlhttp://www.shnenglu.com/wifecooky/services/trackbacks/112478.html午餐旉?

zero 坐在桌前,机械的重?#8220;夹菜 -> 咀?-> 吞咽”的动作序列,怸用无形的大字写着Q我心不在焉。在他的寚w坐着 Solmyr Q慢条斯理的吃着他那份午,l持着他一贯很有修ȝ形象 ——?或者按?zero q些熟悉他本质的人的说法Q假象?

“怎么?zero Q胃口不好么Q?#8221;Q基本填p子之后,Solmyr 觉得g应该兛_一下他的学徒了?

“呃,没什么,只是 …… Solmyr QC++ Z么不支持垃圾攉呢?Q注Q垃圾收集是一U机Ӟ保证动态分配了的内存块会自动释放,Java {?
语言支持q一机制。)”

Solmyr 叹了口气Q用一U^静的眼神盯着 zero Q?#8220;是不是在 BBS 上和人吵 C++ ?Java 哪个更好Q而且吵输了?我早告诉q你Q这U争论再无聊不过了?#8221;

“?…… ?#8221;Qzero 不得不承?——?Solmyr 的眼虽然一点也不锐利,但是却莫名其妙的?zero 产生了微微的恐惧感?

“而且Q谁告诉?C++ 不支持垃圾收集的Q?#8221;

“啊!Solmyr 你不是开玩笑吧?Q?#8221;

“zero 你得转变一下观c我问你QC++ 支不支持可以动态改变大的数组Q?#8221;

“q?…… 好象也没有吧Q?#8221;

“?vector 是什么东西?”

“?……”

“支持一U特性,q不是说非得把这个特性加?nobr style="COLOR: rgb(102,0,255); BORDER-BOTTOM: rgb(102,0,255) 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" target="_blank">语法里去Q我们也可以选择用现有的语言机制实现一个库来支持这个特征。以垃圾攉ZQ这里我们的d是要保证每一个被动态分配的内存块都能够被释放,也就是说 ……”QSolmyr 不知从哪里找Z一张纸、一支笔Q写刎ͼ

int* p = new int; // 1
delete p; // 2

“也就是说Q对于每一?1 Q我们要保证有一?2 被调用,1 ?2 必须成对出现。我来问你,C++ 中有什么东西是pa本n保证一定成对出现的Q?#8221;

“……”Qzero 露出了努力搜索记忆的表情Q不q很明显一无所莗?

“提示一下,和类的创建有兟?#8221;

“哦!构造函C析构函数Q?#8221;

“正确。可惜普通指针没有构造函C析构函数Q所以我们必要写一个类来加一?nobr style="COLOR: rgb(102,0,255); BORDER-BOTTOM: rgb(102,0,255) 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" target="_blank">包装Q最单的pq样Q?#8221;

class my_intptr
{
public:
int* m_p;

my_intptr(int* p){ m_p = p; }
~my_intptr(){ delete m_p; }
};

…………

my_intptr pi(new int);
*(pi.m_p) = 10;

…………

“q里我们可以攑ֿ的?my_intptr Q不用担心内存泄漏的问题Q一?pi q个变量被销毁,我们知道 pi.p 指向的内存块一定会被释放。不q如果每ơ?my_intptr 都得去访问它的成员未免太ȝ了。ؓ此,可以l这个类加上重蝲?* q算W:”

class my_intptr
{
private:
int* m_p;

public:
my_intptr(int* p){ m_p = p; }
~my_intptr(){ delete m_p; }

int& operator*(){ return *m_p; }
};

…………

my_intptr pi;
*pi = 10;
int a = *pi;

…………

“现在是不是看h my_intptr 像是一个真正的指针了?正因为如此,q种技术被UCؓ指针。现在我问你Q这个类q缺哪些东西?”

zero q眉头Q眼睛一眨一眨,看上d像一台慢?nobr style="COLOR: rgb(102,0,255); BORDER-BOTTOM: 0px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" target="_blank">电脑正在辛苦的往它的盘上拷贝文件。良久,zero 抬v头来Q不太确定的_“是不是还~少一个拷贝构造函数和一个赋D符Q?#8221;

“说说Z么?#8221;QSolmyr 昄不打就q样放过 zero?

“因ؓ …… 我记得没错的?…… ?0 ?》(注:指《Effective C++ 2/e》一书)中提到过Q如果你的类里面有指针指向动态分配的内存Q那么一定要为它写一个拷贝构造函数和一个赋D符 …… 因ؓ …… 否则的话Q一旦你做了赋|会导致两个对象的指针指向同一块内存。对了!如果是上面的c,q样一来会D同一个指针被 delete 两次Q?#8221;

“正确。那么我们应该怎样来实现呢Q?#8221;

“q简单,我们?memcpy ?nobr style="COLOR: rgb(102,0,255); BORDER-BOTTOM: rgb(102,0,255) 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" target="_blank">目标指针指向的内存中的内Ҏ贝过来?#8221;

“如果我们的智能指针指向一个类的对象怎么办?注意Q类的对象中可能有指针,不能?memcpy?#8221;

“?…… 我们用拷贝构造的办法?#8221;

“如果我们的智能指针指向的对象不能拯构造怎么办?它可能有一个私有的拯构造函数?#8221;

“?……”Qzero 了一,军_老实承认Q?#8220;我不知道?#8221;

“问题在哪你知道么Q在于你没有把智能指针看作指针。想象一下,如果我们对一个指针做赋|它的含义是什么?”

“呃,我明白了Q在q种情况下,应该惛_法让两个指针指向同一个对?…… 可是 Solmyr Q这样以来岂不是仍然要对同一个对象删除两遍?”

“是的Q我们得惛_?nobr style="COLOR: rgb(102,0,255); BORDER-BOTTOM: rgb(102,0,255) 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" target="_blank">解决q?个问题,办法不只一U。比较好的一U是为每个指针维护一个引用计数|每次赋值或者拷贝构造,p计数值加一Q这意味着指向q个内存块的指针又多了一 个;而每有一个智能指针被销毁,p计数值减一Q这意味着指向q个内存块的指针了一个;一旦计数gؓ 0 Q就释放内存块。象q样Q?#8221;

class my_intptr
{
private:
int* m_p;
int* m_count;

public:
my_intptr(int* p)
{
m_p = p;
m_count = new int; // 初始化计数gؓ 1
*m_count = 1;
}
my_intptr(const my_intptr& rhs) // 拯构造函?
{
m_p = rhs.m_p; // 指向同一块内?
m_count = rhs.m_count; // 使用同一个计数?
(*m_count)++; // 计数值加 1
}
~my_intptr()
{
(*m_count)--; // 计数值减 1
if( *m_count == 0 ) // 已经没有别的指针指向该内存块?
{
delete m_p;
delete m_count;
}
}

my_intptr& operator=(const my_intptr& rhs)
{
if( m_p == rhs.m_p ) // 首先判断是否本来指向同一内存?
return *this; // 是则直接q回

(*m_count)--; // 计数值减 1 Q因指针不再指向原来内存块了
if( *m_count == 0 ) // 已经没有别的指针指向原来内存块了
{
delete m_p;
delete m_count;
}

m_p = rhs.m_p; // 指向同一块内?
m_count = rhs.m_count; // 使用同一个计数?
(*m_count)++; // 计数值加 1
}

…………
};

“其他部分没有什么太大变化,我不费事了。现在想象一下我们怎样使用q种指针Q?#8221;QSolmyr 放下了笔Q再ơ拿起了{子Q有些惋惜的发现他爱吃的肉丸子已l冷了?

zero 惌着Q有些迟疑?#8220;我们 …… 可以?new int 表达式作为构造函数的参数来构造一个智能指针,然后 …… 然后我们可以L的赋|”Q他开始抓住了思\Q越说越快,“L的用已经存在的智能指针来构造新的智能指针,指针的赋D符、拷贝构造函数和析构 会保证计数值始l等于指向该内存块的指针数?#8221;zero g明白了他看到了怎样?nobr style="COLOR: rgb(102,0,255); BORDER-BOTTOM: rgb(102,0,255) 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" target="_blank">功能Q?开始激动v来:“然后一旦计数gؓ 0 被分配的内存块就会释放!也就是说 …… 有指针指向内存块Q它׃释放Q一旦没有,它就自动释放Q太了Q我们只要一开始正的初始化智能指针,可以象普通指针那样用它Q而且完全不用担心?存释攄问题Q太了Q?#8221;zero Ȁ动的大叫Q?#8220;q就是垃圾收集!Solmyr Q我们在饭桌上实C一个垃圾收集器Q?#8221;

Solmyr 很明显没有分?zero 的激动:“我在吃饭Q你能不能不要大?#8216;饭桌上实C一个垃圾收集器’q种倒胃口的话?”了一,Solmyr 带着他招牌式的坏W,以一U可恶的口吻说道Q?#8220;而且h意一下自q形象?#8221;

“嗯?”Qzero 回过来Q发现自׃知什么时候站了v来,而整个餐厅里的h都在看着他嘿嘿偷W,q让他感觉自己像个傻瓜?

zero U着脸坐下,压低了声音问 Solmyr Q?#8220;不过 Solmyr Q这实是一个的垃圾攉机制啊,只要我们把这个类Ҏ …… ?…… Ҏ模板c,象这P”zero 抓过了纸W,写到Q?

template <typename T>
class my_ptr
{
private:
T* m_p;
int* m_count;
…………
};

“它不p支持Lcd的指针了吗?我们可以把它用在Q何地斏V?#8221;

Solmyr 摇了摇头Q?#8220;不,你把问题想的太简单了。对于简单的cdQ这个类实可以处理的很好,但实际情冉|很复杂的。考虑一个典型情况:c?Derived 是类 Base 的派生类Q我们希望这栯|”

Base* pb;
Derived pd;
…………
pb = pd;

“你倒说说看Q这U情况,怎样改用上面q个指针来处理?”

“……”Qzero 沉默了?

“要实C个完整的垃圾攉机制q不ҎQ因为有许多l节要考虑?#8221;QSolmyr 开始ȝ了,“不过Q基本思\是上面说的q些。值得庆幸的是Q目前已l有了一个相当成熟的‘引用计数’指针Qboost::shared_ptr?大多数情况下Q我们都可以使用它。另外,除了指针之外Q还有一?nobr style="COLOR: rgb(102,0,255); BORDER-BOTTOM: rgb(102,0,255) 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" target="_blank">技?/nobr>也能够帮助我们避开释放内存的问题,比如内存池。但是,关键在于 ——?”

Solmyr 再度用U^静的眼神盯着 zero Q?

“wؓ C/C++ E序员,必须有创造力。Uh在语a机制上不思进取的人,那种必须要靠语法强制才知道怎样~程的hQU没有别人告诉他该干什么就无所适从的hQ不适合q门语言?/div>

楚天清秋 2010-04-13 17:36 发表评论
]]>template必须定义于头文g中[转]http://www.shnenglu.com/wifecooky/archive/2010/04/12/112339.html楚天清秋楚天清秋Mon, 12 Apr 2010 08:23:00 GMThttp://www.shnenglu.com/wifecooky/archive/2010/04/12/112339.htmlhttp://www.shnenglu.com/wifecooky/comments/112339.htmlhttp://www.shnenglu.com/wifecooky/archive/2010/04/12/112339.html#Feedback0http://www.shnenglu.com/wifecooky/comments/commentRss/112339.htmlhttp://www.shnenglu.com/wifecooky/services/trackbacks/112339.htmltemplate必须定义于头文g?/font>

最q在目中遇C一个奇怪的问题?/p>

在程序中QA模块用到了一个模版函敎ͼq个模版函数外部不需要调用,因此?.cpp中定义ƈ实现之?/p>

~译的时候奇怪的现象发生了(VC6 sp5Q,在debug下,一切正常;在release下,在写q个模块的h那里可以正常~译且运行正常。可拿到我这来的时候,q译不q了。我们几个师兄弟都没辙了Q只能等老板来解决了?/p>

“template必须定义于头文g中!”老板如是告诉我们?/p>

试之Q果不其Ӟ

今日又看《C++标准E序库》,在p10|?Q有记蝲Q?#8220;目前template必须定义于头文g?...."?/p>

楚天清秋 2010-04-12 16:23 发表评论
]]>
如何判断文g是否存在Q?/title><link>http://www.shnenglu.com/wifecooky/archive/2010/04/12/112286.html</link><dc:creator>楚天清秋</dc:creator><author>楚天清秋</author><pubDate>Mon, 12 Apr 2010 01:17:00 GMT</pubDate><guid>http://www.shnenglu.com/wifecooky/archive/2010/04/12/112286.html</guid><wfw:comment>http://www.shnenglu.com/wifecooky/comments/112286.html</wfw:comment><comments>http://www.shnenglu.com/wifecooky/archive/2010/04/12/112286.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/wifecooky/comments/commentRss/112286.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/wifecooky/services/trackbacks/112286.html</trackback:ping><description><![CDATA[<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">sys</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">stat.h</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">   <br></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">io.h</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">   <br></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>  <br></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000"> FileExist(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> FileName)   <br></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img id=Codehighlighter1_87_167_Open_Image onclick="this.style.display='none'; Codehighlighter1_87_167_Open_Text.style.display='none'; Codehighlighter1_87_167_Closed_Image.style.display='inline'; Codehighlighter1_87_167_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_87_167_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_87_167_Closed_Text.style.display='none'; Codehighlighter1_87_167_Open_Image.style.display='inline'; Codehighlighter1_87_167_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_87_167_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_87_167_Open_Text><span style="COLOR: #000000">{   <br></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000"> stat my_stat;   <br></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> (stat(FileName, </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">my_stat) </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);   <br></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">   <br></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>  <br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>  <br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000"> IsDirectory(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> FileName)   <br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img id=Codehighlighter1_220_359_Open_Image onclick="this.style.display='none'; Codehighlighter1_220_359_Open_Text.style.display='none'; Codehighlighter1_220_359_Closed_Image.style.display='inline'; Codehighlighter1_220_359_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_220_359_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_220_359_Closed_Text.style.display='none'; Codehighlighter1_220_359_Open_Image.style.display='inline'; Codehighlighter1_220_359_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_220_359_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_220_359_Open_Text><span style="COLOR: #000000">{   <br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000"> stat my_stat;   <br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (stat(FileName, </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">my_stat) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">) </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;   <br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> ((my_stat.st_mode </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> S_IFDIR) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);   <br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div> <p>在程序中获得普通文Ӟ目录Q管道,socketQ字W,块(Q的属性?/p> <p>函数原型<br>#include <sys/stat.h></p> <p>int stat(const char *restrict pathname, struct stat *restrict buf);<br>提供文g名字Q获取文件对应属性。把相应的属性存攑ֈ buf中?/p> <p>2 文g对应的属?br>struct stat {<br>        mode_t     st_mode;       //文g对应的模式,文gQ目录等<br>        ino_t      st_ino;       //inode节点?br>        dev_t      st_dev;        //讑֤L<br>        dev_t      st_rdev;       //Ҏ讑֤L<br>        nlink_t    st_nlink;      //文g的连接数<br>        uid_t      st_uid;        //文g所有?br>        gid_t      st_gid;        //文g所有者对应的l?br>        off_t      st_size;       //普通文Ӟ对应的文件字节数<br>        time_t     st_atime;      //文g最后被讉K的时?br>        time_t     st_mtime;      //文g内容最后被修改的时?br>        time_t     st_ctime;      //文g状态改变时?br>        blksize_t st_blksize;    //文g内容对应的块大小<br>        blkcnt_t   st_blocks;     //文g内容对应的块数量<br>      };<br>可以通过上面提供的函敎ͼq回一个结构体Q保存着文g的信息?/p> <p>本文来自CSDN博客Q{载请标明出处Q?a >http://blog.csdn.net/fxpbupt/archive/2008/11/17/3313427.aspx</a></p> <img src ="http://www.shnenglu.com/wifecooky/aggbug/112286.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/wifecooky/" target="_blank">楚天清秋</a> 2010-04-12 09:17 <a href="http://www.shnenglu.com/wifecooky/archive/2010/04/12/112286.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.czyhq.cn" target="_blank">www.þ.com</a>| <a href="http://www.njcsggs.cn" target="_blank">뾫Ʒþþþ..</a>| <a href="http://www.weryuadfsd.cn" target="_blank">޾Ʒþ</a>| <a href="http://www.gdkm2.cn" target="_blank">þþƷһĻ</a>| <a href="http://www.clkj168.cn" target="_blank">91þþžվ</a>| <a href="http://www.fz-tm.cn" target="_blank">þþþþƷ66</a>| <a href="http://www.bbs0310.cn" target="_blank">þù׽</a>| <a href="http://www.orionstaros.cn" target="_blank">鶹AVһþ</a>| <a href="http://www.23d6.cn" target="_blank">ũ帾ŮëƬƷþ</a>| <a href="http://www.zghart.cn" target="_blank">Ʒþþþ</a>| <a href="http://www.dgchengxin.cn" target="_blank">ھƷþþþþҰ</a>| <a href="http://www.u3h1.cn" target="_blank">ɫۺϾžþ</a>| <a href="http://www.shoescaps.cn" target="_blank">Ʒþþþþþþ</a>| <a href="http://www.hchyg.cn" target="_blank">ŷСþþþþþ</a>| <a href="http://www.hesiyu.cn" target="_blank">ھƷþþþӰԺձ </a>| <a href="http://www.ccum.cn" target="_blank">þþƷ</a>| <a href="http://www.9lang.cn" target="_blank">ھƷþþžŹƷ</a>| <a href="http://www.npoq.cn" target="_blank">Ʒþþþþ벻</a>| <a href="http://www.hbhshj.cn" target="_blank">þþƷƷ޾Ʒ</a>| <a href="http://www.help0.cn" target="_blank">Ʒ˾þþ</a>| <a href="http://www.shiweey.cn" target="_blank">Ʒþþþþ˳ </a>| <a href="http://www.csffh.cn" target="_blank">ٸþþþþþþþ</a>| <a href="http://www.enjoa.cn" target="_blank">ҹƷþþþþ</a>| <a href="http://www.hnjsy.com.cn" target="_blank">Ļһþվ</a>| <a href="http://www.83601.com.cn" target="_blank">AV12þ</a>| <a href="http://www.hbguangtao.cn" target="_blank">þþƷа</a>| <a href="http://www.longfee.cn" target="_blank">þ޾Ʒϵַ</a>| <a href="http://www.87666.com.cn" target="_blank">㽶þҹɫƷС˵</a>| <a href="http://www.lssbb.cn" target="_blank">99þһa</a>| <a href="http://www.4o2ptp.cn" target="_blank">޺ݺۺϾþѿ</a>| <a href="http://www.tydls.cn" target="_blank">ۺϾþøϾþúݺݺ97ɫ </a>| <a href="http://www.0813e.cn" target="_blank">97Ʒ97þþþþ</a>| <a href="http://www.ouhly.cn" target="_blank">þٸ۲AVר</a>| <a href="http://www.hcpyr.cn" target="_blank">ղƷaëƬþ</a>| <a href="http://www.softplat.cn" target="_blank">žžþ99ۺһ</a>| <a href="http://www.iwck.cn" target="_blank">Ʒþþþþ12</a>| <a href="http://www.zhoucheng888.cn" target="_blank">vaþþþ</a>| <a href="http://www.hantong168.com.cn" target="_blank">2021ƷþþƷ</a>| <a href="http://www.bxxlsl.cn" target="_blank">99ξþþŷƷվ </a>| <a href="http://www.sanwencn.cn" target="_blank">պþþþƷӰԺҳ </a>| <a href="http://www.yixue77.cn" target="_blank">þ99Ʒþ99ý</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>