由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 问一个C++文件读取的问题
相关主题
请教个static_cast vs reinterpret_cast的问题。用数组做参数,在函数内部如何知道数组的size?
A C++ puzzle for me请大侠评点一下我这个C++多重继承的程序。。。写得对不对啊。
问题: C++ static_cast between int and float我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。
a simple question for C++ class这样一道面试题 (转载)-debug求助
关于C++中一个Class的大小 (转载)reinterpret cast的问题
数组定义的时候,分配空间了么?问个程序问题
问个简单的memory allocation 的问题。一个很诡异的ifstream问题,求助~~
一个C/C++面试题来,出个题
相关话题的讨论汇总
话题: ios话题: output话题: endl话题: fstream话题: file
进入Programming版参与讨论
1 (共1页)
a********n
发帖数: 648
1
下面这个简单程序,我创建一个文件并在里面存了8个数,10,20,...,80,然后需要从
第三个数起读2个数,应该是30,40。但是读出来却是7680,10240,不知道是不是
seekg()这个函数没有用对,折腾了很久,还是不对,不知道哪位大牛可以帮着看看。
谢谢了先。
int main()
{
int i, k;
//Create a file
fstream OUTPUT( "RESULT.dat", ios::out | ios::in );
if( !OUTPUT )
{
cerr << "File could not be opened." << endl;
exit( 1 );
}

//Input the data
for( i=1; i<=8; i++ )
{
k = i*10;
cout << " k = " << k << endl;
OUTPUT.write( reinterpret_cast
p***o
发帖数: 1252
2
ios::binary?

【在 a********n 的大作中提到】
: 下面这个简单程序,我创建一个文件并在里面存了8个数,10,20,...,80,然后需要从
: 第三个数起读2个数,应该是30,40。但是读出来却是7680,10240,不知道是不是
: seekg()这个函数没有用对,折腾了很久,还是不对,不知道哪位大牛可以帮着看看。
: 谢谢了先。
: int main()
: {
: int i, k;
: //Create a file
: fstream OUTPUT( "RESULT.dat", ios::out | ios::in );
: if( !OUTPUT )

z****e
发帖数: 2024
3
int i, k;
//Create a file
ofstream OUTPUT( "RESULT.dat"); //ios::out | ios::in );
if( !OUTPUT ){
cerr << "File could not be opened." << endl;
exit( 1 );
}
//Input the data
for( i=1; i<=8; i++ ){
k = i*10;
cout << " k = " << k << endl;
OUTPUT.write( reinterpret_cast( &k ), sizeof(int) );
}
OUTPUT.close();
cout << endl << "Start Output" << endl;
ifstream INPUT("RESULT.dat");
INPUT.seekg( 2*sizeo

【在 a********n 的大作中提到】
: 下面这个简单程序,我创建一个文件并在里面存了8个数,10,20,...,80,然后需要从
: 第三个数起读2个数,应该是30,40。但是读出来却是7680,10240,不知道是不是
: seekg()这个函数没有用对,折腾了很久,还是不对,不知道哪位大牛可以帮着看看。
: 谢谢了先。
: int main()
: {
: int i, k;
: //Create a file
: fstream OUTPUT( "RESULT.dat", ios::out | ios::in );
: if( !OUTPUT )

z****e
发帖数: 2024
4
个人感觉,你同时读写一个流,会有问题。
个人的感觉,不一定对,希望大侠来指点。
还有一个常见错误,就是你那个 RESULT.dat 其实没有被update。里面可能已经乱了。
a********n
发帖数: 648
5
分开的也试过了,也是不行,很奇怪
还有就是如果写入的是1,2,....,8, 或者100,200,...,800,都没有问题,单单就是10,20,...80有问题。

【在 z****e 的大作中提到】
: 个人感觉,你同时读写一个流,会有问题。
: 个人的感觉,不一定对,希望大侠来指点。
: 还有一个常见错误,就是你那个 RESULT.dat 其实没有被update。里面可能已经乱了。

K*****n
发帖数: 65
6
Solution One:
1) Replace
fstream OUTPUT( "RESULT.dat", ios::out | ios::in );
with
fstream OUTPUT( "RESULT.dat", ios::trunc| ios::out | ios::in );
2) Replace
OUTPUT.seekg( 2*sizeof(int), ios::beg );
with
OUTPUT.seekg( 1 + 2*sizeof(int), ios::beg );
Solution Two:
Replace
fstream OUTPUT( "RESULT.dat", ios::out | ios::in );
with
fstream OUTPUT( "RESULT.dat", ios::binary | ios::trunc| ios::out | ios::in );
a********n
发帖数: 648
7
我发现你说的是对的,现在可以了,非常感谢。

【在 p***o 的大作中提到】
: ios::binary?
a********n
发帖数: 648
8
谢谢,加上binary就可以了。我看c++的书上也没有说必须要指定binary
也感谢上面各位帮我看程序。

【在 K*****n 的大作中提到】
: Solution One:
: 1) Replace
: fstream OUTPUT( "RESULT.dat", ios::out | ios::in );
: with
: fstream OUTPUT( "RESULT.dat", ios::trunc| ios::out | ios::in );
: 2) Replace
: OUTPUT.seekg( 2*sizeof(int), ios::beg );
: with
: OUTPUT.seekg( 1 + 2*sizeof(int), ios::beg );
: Solution Two:

1 (共1页)
进入Programming版参与讨论
相关主题
来,出个题关于C++中一个Class的大小 (转载)
一个指向指针的指针的引用?数组定义的时候,分配空间了么?
为什么有点函数声明的参数类型但是没有变量名呢?问个简单的memory allocation 的问题。
一个古怪的C程序运行错误。一个C/C++面试题
请教个static_cast vs reinterpret_cast的问题。用数组做参数,在函数内部如何知道数组的size?
A C++ puzzle for me请大侠评点一下我这个C++多重继承的程序。。。写得对不对啊。
问题: C++ static_cast between int and float我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。
a simple question for C++ class这样一道面试题 (转载)-debug求助
相关话题的讨论汇总
话题: ios话题: output话题: endl话题: fstream话题: file