[英]Writing dynamic data to files in win32
我在使用win32时遇到问题。 我必须使用c ++将一些动态数据写入Win32中的文件。 我知道如何将字符串写入文件的基础知识,但是我们如何将整数,浮点数等数据写入文件。
我有一个文件,正在将数据复制到另一个新创建的文件中。 我需要将整数,浮点数等数据写入此文件的顶部。 我知道我们可以通过添加数据
char buff[] = "hello";
并将其复制到文件中,我不知道如何处理不同类型的数据类型。 有什么帮助吗?
char buf[] = "hello"; //Null terminate
LPVOID lpMsgBuf;
DWORD byteWritten = 0;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
BOOL ReadFileReturn;
HANDLE hFile = CreateFile("MYFILE.blo", // open MYFILE.blo
GENERIC_WRITE | GENERIC_READ,
FILE_SHARE_READ, // share for reading
NULL, // no security
OPEN_EXISTING, // existing file only
FILE_ATTRIBUTE_NORMAL, // normal file
NULL); // no attr
ReadFileReturn = ReadFile(hFile,buf,30,&byteWritten,NULL);
if(ReadFileReturn)
{
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL);
WriteFile(hStdOut,buf,sizeof buf,NULL,NULL);
}
else
{
WriteFile(hStdOut,"It Failed",sizeof "It Failed",NULL,NULL);
}
这取决于您如何打开文件(实际上是在哪种模式下)。 如果您以文本模式打开它们,则无论其类型如何,所有内容都将以字符串/文本的形式写入。 否则,您可以选择以二进制模式打开文件。 在这种模式下, int
将被写入int
, float
将被写入float
等。
这是描述两种文件类型之间差异的链接http://www.fileinfo.com/help/binary_vs_text_files
您也许可以尝试以下方法:
char str[80] = "";
int a = 1, b = 2;
int n = sprintf(str, "%d", a+b);
DWORD bytesWritten;
WriteFile(fileHandle, str, strlen(str), &bytesWritten, NULL);
检查一下:
http://www.cplusplus.com/reference/ostream/ostream/write/
因此,基本上,您可以这样做:
....
std::ofstream myfile("filename");
double my_data = 15;
myfile.write( static_cast< const char*>(&my_data), sizeof( double ) );
...
之前的代码段有些粗糙,您可能需要检查诸如端烯和对齐的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.