BCGSoftBug 发表于 2006-3-19 18:34:00

basic_ifstream tellg ws

平台:    Redhat Linux AS 4
编译器  g++ 3.2.3
输源代码
#include <stdio.h>
#include <c++/3.2.3/iostream>
#include <c++/3.2.3/fstream>
#include <c++/3.2.3/string>
using namespace std;
int main()
{
    //cout<<"Hello World\n";
                  
    //block until user types something
    basic_ifstream<wchar_t> fi;
    wstring s;
    fi.open("/root/workspace/test/123.txt");
    cout<<fi.is_open()<<endl;
    ws(fi);    //去除空白
    fi.tellg();   //读一下下一个读取位置   没被注释掉---〉第一种情况
                                                                        被注释掉---〉第二种情况
    getline(fi,s);   //读一行
    wcout<<s<<endl;//看看读了什么
    fgetc(stdin);
    return 0;
}
/*
123.txt内容在下面一行的引号内,引号内第一个是空格
" #define"
*/
输出
(第一种情况和第二种情况都是下面的样子(#前面没有空格))
1
#define
///////////////////////////////////////////////////////////////////////////////////////////
平台:    winxp
编译器  ms ml 8.0.50727.42(vc++ 2005)---〉情况A
               ms ml ????(忘了,就是vc++6.0的)---〉情况B
输源代码
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
    //cout<<"Hello World\n";
                  
    //block until user types something
    basic_ifstream<wchar_t> fi;
    wstring s;
    fi.open("123.txt");
    cout<<fi.is_open()<<endl;
    ws(fi);
    //fi.tellg();    //被注释掉---〉第一种情况
                           //没被注释掉---〉第二种情况
    getline(fi,s);
    wcout<<s<<endl;
    fgetc(stdin);
    return 0;
}

/*
123.txt内容在下面一行的引号内,引号内第一个是空格
" #define"
*/
输出
(情况A+第一种情况)
1
#define
(跟g++一样)
(情况A+第二种情况)
1
define
(跟g++不一样,少了#,是tellg()导致?)
////////////////////////////////////////////
(情况B+第一种情况/第二种情况)
1
#define
(跟g++不一样,#前多了空格,ws没作用?)
//--------------------------------------------------------------------------
评价如下:
按照理论
g++两种情况下的输出都是对的
vc++2005只有第一种情况对
vc++6两种情况都有问题
现在的问题是,这样的评价有没有问题,输出为什么不同?
(本人希望得到g++的输出,根据文档就应该这样)

Eagle 发表于 2006-3-19 21:33:00

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

BCGSoftBug 发表于 2006-3-27 22:10:00

难道就没人碰上过这个问题??
注:
1楼帖子的内容显示是有问题的
比如“#include”,后面的内容显示不出来
比如“cout<”,后面的内容显示不出来
页: [1]
查看完整版本: basic_ifstream tellg ws