如何用fstream打开软盘? 我正在尝试这样的事情: 但它总是返回错误
#include <iostream>
#include <fstream>
using namespace std;
char a='k';
int main()
{
fstream stream;
stream.open( "\\\\.\\A:", ios::binary );
if( stream.good() == false )
{
cout <<"Error";
}
for( int i = 0 ; i < 512 ; i++ )
{
stream >> a;
//cout << a;
}
stream.close();
cin.get();
return 0;
}
答案 0 :(得分:2)
您无法使用fstream打开设备 - 只能使用该设备上包含的文件系统中的文件。您需要使用特定于操作系统的功能来访问设备。
编辑:要清楚,可以使用fstream打开软盘设备,但这种对系统的访问级别超出了标准C ++库提供的抽象级别,因此应该使用特定于操作系统的函数来代替
答案 1 :(得分:0)
如this MSDN documentation的备注部分所述,应使用FILE_SHARE_READ|FILE_SHARE_WRITE
共享模式打开设备文件。默认情况下,fstream不支持此功能。您需要使用低级win32 CreateFile
API直接打开文件句柄,然后使用ReadFile
和WriteFile
进行读/写。完成后,使用CloseHandle
关闭句柄。