下沙论坛

标题: basic_ifstream tellg ws [打印本页]

作者: BCGSoftBug    时间: 2006-3-19 18:34
标题: basic_ifstream tellg ws
平台:    Redhat Linux AS 4" G7 ^# d0 u& i9 Z/ Q' Z 编译器  g++ 3.2.3$ T. Q% y6 h! |# }( N; w( g, J 输源代码 - y5 Z* i" [3 p) Z# o5 s4 h#include ( g" Q! F" Y2 d9 w2 M7 I #include ' X1 I/ @. S# f9 Y! {#include 2 P/ R0 j( h+ r& ^#include / A9 j/ M0 I9 B2 t% l+ { using namespace std;0 Z! q, U Q- Z" h3 a int main()( X) K7 F& ^3 [ {7 Z# |* j7 d% S6 b5 b //cout<<"Hello World\n"; 4 {) o8 x* ? ?' J: s/ F 4 i) |9 R1 N1 ~! w( B* C. B //block until user types something 1 B5 E5 y9 x7 C7 E basic_ifstream fi;/ U a4 ~0 b2 I* X' B wstring s; 3 {3 \! S/ J. u9 M$ y9 ^' W fi.open("/root/workspace/test/123.txt");2 E5 n! t7 h$ a* \ cout<! F8 }! v: V( \/ m+ d% ?) L ws(fi);    //去除空白 ( y }7 x6 j5 e# x% B9 C fi.tellg();   //读一下下一个读取位置   [U]没被注释掉[/U]---〉第一种情况. U# p: t/ P' t; x( {1 W [U]被注释掉[/U]---〉第二种情况 6 k( B, l* K2 ?9 N# d getline(fi,s); //读一行9 s; m# ~- D# G wcout< N6 u* F% T& Q" Q fgetc(stdin);5 m4 N& l4 I$ {. W, d4 r" a return 0; 7 r, q6 v/ w; b0 ?' }( J} 1 ?( I+ w8 c3 p1 T /*+ `. O9 j% r$ F) O 123.txt内容在下面一行的引号内,引号内第一个是空格% N. o7 L9 t0 q+ v# V/ X9 s " #define"3 c1 j/ b7 S; L4 E+ _3 b. V2 ^, n! } */ : C0 q$ C( n0 w输出! Q# R' l2 J- y/ V: P1 H% ` (第一种情况和第二种情况都是下面的样子([U]#前面没有空格[/U]))9 f% P* ^4 _# X9 v7 U" [+ _ 1 6 s* c- Y, I7 `: _; M#define ; E. Y, @2 ?& U2 z. D; s5 m% `* l/////////////////////////////////////////////////////////////////////////////////////////// . T2 X* w0 _+ e# f! e. N1 r1 {平台:    winxp( {1 R. O$ J# f( ^ 编译器  [U]ms ml 8.0.50727.42 (vc++ 2005)[/U]---〉情况A . h- w: G2 v! H! U4 L [U]ms ml ????(忘了,就是vc++6.0的)[/U]---〉情况B / P! E# F0 e5 C( Y% ]7 b8 h1 c输源代码3 R" b+ ~. E/ @0 U/ u0 C #include 7 z+ y5 P" O. i) w& V& s) p#include U A* K4 E2 ~4 W #include # x9 F5 {+ i. e: V7 p) ^' g#include }5 [' p4 b ~3 T( v! e% q. X using namespace std;7 |1 H- o9 ]. [ int main() ) O# g* r$ C2 h( B- l5 C4 j{% T6 |9 Q; }" }2 d; \ //cout<<"Hello World\n"; - R) w; T! m* X5 X1 I9 `3 K; N h ' @+ u1 @% p5 `- a: ? //block until user types something 3 s4 R6 V* D' C6 @ basic_ifstream fi; ) s. U, E& V) E0 @ x3 h wstring s;1 v. e3 j6 q o fi.open("123.txt"); - _# ?: e/ q9 a$ i cout<% A- f8 I* z" r- p1 M& d ws(fi); % `5 C- o& ~* w' s2 K( Q //fi.tellg(); [U] //被注释掉[/U]---〉第一种情况 2 g. @9 {% ]9 s2 O: e [U]//没被注释掉[/U]---〉第二种情况% ^6 e8 ~0 l+ ^ v, z' M; M. b# e getline(fi,s);, U3 c5 l; B! m. D* E wcout<1 U$ |/ V/ ~8 p" l fgetc(stdin); / K9 A. ]- n- I) E9 ]1 t8 ^ T return 0;2 D& U9 @! m, Q. |) H3 o } ) L8 \ }9 r- h) E( r$ D+ _5 F/ n: L- |$ b /* 2 Q' N5 b- e' x- h4 D8 B2 h123.txt内容在下面一行的引号内,引号内第一个是空格 6 }8 z+ P! Z7 [7 V" #define"5 C" t# o/ B; S/ B: A) L4 p */ 0 O7 R6 K3 m9 _7 w! E输出 * y; R7 t7 u6 c% [) {(情况A+第一种情况) ) {. y3 m0 i* Y. y" z: c 1 9 B* V# B p% J3 n6 l: {4 ]% h#define, h$ W' V3 \) d: `& Q (跟g++一样) 3 N& S" Z; J. H; x% e d(情况A+第二种情况) " d5 t2 f7 u/ J6 l/ g$ G, y) D7 i 1 1 C% O2 v5 H- x* ?- fdefine ! V) S2 f# g3 m# p! u! ~(跟g++[U]不[/U]一样,少了#,是tellg()导致?)3 O! M2 Q( g' T //////////////////////////////////////////// 4 B3 R: ~+ J: Q" E1 |; J' Z! }8 e(情况B+第一种情况/第二种情况)( o+ a) G1 O% W4 l6 U8 N9 t, F0 @0 L7 K/ R7 \ 1 " p( d4 {8 ^ L7 L! z #define 7 e1 P8 D1 i6 p% K(跟g++[U]不[/U]一样,#前多了空格,ws没作用?)5 s% F* d* n4 B$ Y/ L* u //--------------------------------------------------------------------------( G5 z/ P% G2 I$ d; R6 K+ ^0 F( c 评价如下: , q% b6 N8 P* ^/ |9 f% e按照理论 8 v! ^' R: c s+ g+ l) Bg++两种情况下的输出都是对的 3 N$ m* u5 I- A7 V2 }. gvc++2005只有第一种情况对 9 V) \; _' g* p2 V/ Tvc++6两种情况都有问题 " K% V3 o, q8 S' F* w) v现在的问题是,这样的评价有没有问题,输出为什么不同?# T6 n( m; H. ]/ n (本人希望得到g++的输出,根据文档就应该这样)
作者: Eagle    时间: 2006-3-19 21:33

代码好多啊,我最近眼有点花,飘过。


作者: BCGSoftBug    时间: 2006-3-27 22:10
难道就没人碰上过这个问题?? 7 |) K, p1 Y& T% f2 ?3 n注:$ x* C8 N& o+ x0 o& s5 t 1楼帖子的内容显示是有问题的! M6 Y6 Y/ ]* r- W! m: \ 比如“#include”,后面的内容显示不出来 # ~7 h r5 L% `比如“cout<”,后面的内容显示不出来




欢迎光临 下沙论坛 (http://bbs.xiasha.cn/) Powered by Discuz! X3.3