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++的输出,根据文档就应该这样) <P>代码好多啊,我最近眼有点花,飘过。</P> 难道就没人碰上过这个问题??
注:
1楼帖子的内容显示是有问题的
比如“#include”,后面的内容显示不出来
比如“cout<”,后面的内容显示不出来
页:
[1]