下沙论坛

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

作者: BCGSoftBug    时间: 2006-3-19 18:34
标题: basic_ifstream tellg ws
平台:    Redhat Linux AS 4- ]' u4 q+ ?( ?0 U* ?6 T$ b 编译器  g++ 3.2.3 # a$ t1 `/ N% a# H输源代码: H& L5 @% I/ ^6 [* S# z #include ( p# }% z1 c1 L( v7 ?; t6 P% [#include & E: a! D( U6 |& W' E, ` #include , h' M _9 j( w' [, F #include 6 ~3 o2 U: R2 M; wusing namespace std; . h4 {$ b+ S: }/ yint main() 1 ?; K4 ?: r& f3 C9 z{& j" f* ~! r- N //cout<<"Hello World\n";2 m4 t* k, Z* E' M' b* W" ] + d1 C d0 R! a( g7 K1 w //block until user types something . }; g& v l9 K' F; W* g basic_ifstream fi;, K7 R6 i1 }$ n- y& {0 m8 V wstring s; " A( i. L% a3 w. N# a fi.open("/root/workspace/test/123.txt");4 D1 ?$ |; d2 L8 D% r cout<9 V! }5 \ H: t( M8 y ws(fi);    //去除空白 , L$ a J- T" }# J5 s fi.tellg();   //读一下下一个读取位置   [U]没被注释掉[/U]---〉第一种情况1 v. L0 ]9 {/ z0 x9 | [U]被注释掉[/U]---〉第二种情况% s7 z- \& D# c7 w( L) A* x( u getline(fi,s); //读一行 : H5 A1 s" W" V& t wcout<3 X1 N# H3 e9 @/ r X5 b2 _ fgetc(stdin); ; q1 o7 _/ Q( ^; I) D* P2 w& ^ return 0;* Q+ X/ }1 m+ r5 H+ F: m } $ R8 y4 z( E1 ?! y# v8 K /*5 o; V3 X* \3 ?( ~ 123.txt内容在下面一行的引号内,引号内第一个是空格 : k( T% l$ q; |3 e" #define"# u, }2 r/ B0 G7 y: U1 o `& r9 Q */4 }) Y( _7 i+ s' o( i' X 输出; Y+ q( G7 q; F# l3 [1 R (第一种情况和第二种情况都是下面的样子([U]#前面没有空格[/U])) - k$ E7 E# \: v 1/ f. |7 o0 V; e( O #define5 u: R3 m6 b6 c8 |; J* R ///////////////////////////////////////////////////////////////////////////////////////////7 i' b" y/ p8 V' W0 i9 R# e1 b' D 平台:    winxp . S9 Q" C- I: n& {6 ]& m6 v3 K# y编译器  [U]ms ml 8.0.50727.42 (vc++ 2005)[/U]---〉情况A - o# B7 W: L$ l3 G8 `+ g- E [U]ms ml ????(忘了,就是vc++6.0的)[/U]---〉情况B2 k! Z- j1 X. m- H% ` 输源代码 / J2 @5 f5 }" n8 M2 C% h# ~* N#include 2 R" ]. T8 `) c6 s* [' z, L$ t #include / Z3 [0 F S* y8 v2 b# E#include 0 Q v$ S1 u: m1 w( Q+ l#include 2 Z" y6 K4 n( ~8 u using namespace std;6 S3 q& k: I2 L: s8 G& y5 E. y0 ~ int main() , S6 M* f& N* z& G' @: @9 S{ % l4 D$ `+ R' R8 O5 q //cout<<"Hello World\n";+ ~6 D, w/ P! m7 e3 t P5 D( w( g' u8 V! L; s //block until user types something0 J7 Z9 I1 z8 [$ C- X9 R" z basic_ifstream fi; 3 a' _: K. J2 x- H s* u1 O wstring s; $ E( N2 A% ?/ _, ?4 g fi.open("123.txt"); 2 Y3 K' M, o$ Y+ x# `. }& O cout</ V$ \/ r6 [5 _" o3 u* P5 x ws(fi);# N- v* b+ e& f Q9 T* ]" } //fi.tellg(); [U] //被注释掉[/U]---〉第一种情况: k$ c, t t+ e4 r+ @ [U]//没被注释掉[/U]---〉第二种情况+ ]3 Z' h% u9 a H2 @. B; B0 F getline(fi,s); 9 k% }7 z; L/ s6 S! f wcout<. s, S3 e6 }0 J% L fgetc(stdin);% s: @2 `" Y& n3 o" H return 0;( D# J: K! C- o( A+ ^7 ` } ; r2 b( @ }- J9 y# S# \- b7 y, Q: N7 d$ W& V /* ; ^1 j3 y8 R, K. Q! O# A( [123.txt内容在下面一行的引号内,引号内第一个是空格 - E+ R) \ R$ G d0 q) M2 h" #define" 0 f; @, u9 m6 i0 n*/6 @1 y! _" @6 w i+ g: k2 Z 输出 / z3 x3 G/ Q. K(情况A+第一种情况)" i8 m9 j' G2 i: y- |( M 1# M5 s, j+ ?; X( l0 G& B) E #define7 o! M, q: m+ r! I5 f4 e. a (跟g++一样)) V& N8 {5 F- A% O, b6 {' n (情况A+第二种情况) / v1 G0 X/ q5 _/ |6 s! b" n 1- t( A8 W [/ U$ ?' z D! y3 K* o define + O: _0 w l. e7 V( L, `6 B' h(跟g++[U]不[/U]一样,少了#,是tellg()导致?) : n+ t8 T+ D" b# `" a: D//////////////////////////////////////////// . ?5 M% j2 B' s& u; i(情况B+第一种情况/第二种情况)4 c& v1 I- s; t8 U; j8 _3 g" T 1( K$ O, ]2 O. J8 k$ U2 r #define- k# x" ~. R: ]* q9 X (跟g++[U]不[/U]一样,#前多了空格,ws没作用?) % v' l/ o- x" s; O! F% d//--------------------------------------------------------------------------% O* s3 g7 J, a2 X5 M5 K+ P Y9 Q 评价如下:5 }6 X. L& h# ~$ r% e% ^; u 按照理论 ( W- j, T, a! i) B9 T) z" }g++两种情况下的输出都是对的 ! U* ?. W0 `- s" T9 d' xvc++2005只有第一种情况对 / o" f' p; U6 t( [2 \vc++6两种情况都有问题 7 g8 U) p6 D# U) c" s. p6 P H% M ?现在的问题是,这样的评价有没有问题,输出为什么不同?$ F: o$ D2 O7 V. [$ t- L( b3 L (本人希望得到g++的输出,根据文档就应该这样)
作者: Eagle    时间: 2006-3-19 21:33

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


作者: BCGSoftBug    时间: 2006-3-27 22:10
难道就没人碰上过这个问题??$ W1 z* q2 o: l& f4 v4 [ 注:) A& _& \7 c8 ~/ e 1楼帖子的内容显示是有问题的# J8 q& l3 L* @ 比如“#include”,后面的内容显示不出来- ~1 S; ^; N1 j* ~/ T 比如“cout<”,后面的内容显示不出来




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