我在弄清楚如何正确地将此值写入文件时遇到了一些麻烦。我在互联网上做了一些研究,发现了这篇文章。
#include <fstream>
#include <iostream>
int main()
{
int testVar = 71;
std::ofstream outputFile;
outputFile.open("C:/binary.dat", std::ios::out | std::ios::binary);
outputFile.seekg(0);
outputFile.write(&testVar, sizeof(testVar));
outputFile.close();
}
我从文章中了解到,第一个参数是一个void指针?这意味着它会接受任何类型?但是当我输入它时,intelisense表示没有重载,第一个参数采用char *类型。
我使用了错误的标题或旧版C ++版本的内容吗?
真的可以在这里使用一些帮助。 谢谢!
答案 0 :(得分:0)
我不熟悉功能开发的历史。因此,我无法评论为什么参数类型为Category 1
Product 1 Amount
Product 2 Amount
....
Total Amount of Category 1 : xxxxx
Category 2
Product 3 Amount
....
Total Amount of Category 2 : xxxxx
而不是char*
。
解决问题...
您可以使用:
void*
同时使用outputFile.write(reinterpret_cast<char*>(&testVar), sizeof(testVar));
时使用reinterpret_cast
。
答案 1 :(得分:0)
你真的只需要像之前所说的那样将它转换为char *,但代码还有其他问题。 seekg()用于输入流,您正在编写输出文件。如果您打算清除该行,只需使用trunc。
打开该文件#include <fstream>
#include <iostream>
int main()
{
int testVar = 71;
std::ofstream outputFile("C:/binary.dat", std::ios::out | std::ios::binary | std::ios::trunc);
outputFile.write((char*)&testVar, sizeof(testVar));
outputFile.close();
}
答案 2 :(得分:0)
第一个参数是if
。
大小为1字节的if (Get-Printer -ComputerName $nombre)
{
get-printjob | where {$_.timesubmitted -lt $old -and $_.JobStatus -match "Complete" -and $_.JobStatus -notmatch "Spooling"} | Remove-PrintJob
Write-Host "Eliminados los trabajos completados mas antiguos de una hora"
}
else
Write-Host "No se han encontrado trabajos que coincidan con los parametros"
}
表示逐字节数据,char*
表示数据块。
因此,在编写原始二进制数据时,数据将作为块的char
和大小传递。
我使用了错误的标题或旧版C ++版本的内容吗?
不,这不是问题,因为它是char*
而不是char*
被视为参数。
注意 seekg()成员函数用于输入流。我认为你需要的功能是seekp()