C++ 如何创建特定大小的文本文件c++;

C++ 如何创建特定大小的文本文件c++;,c++,C++,我必须创建一个特定大小的文本文件,用户输入大小。我所需要知道的就是如何使文件更快。目前创建一个10mb的文件大约需要15秒。我必须把时间减少到最多5秒。我该怎么做?目前,这就是我制作文件的方式 void create_file() { int size; cout<<"Enter size of File in MB's : "; cin>>file_size; size = 1024*1024*file_size; // 1MB =

我必须创建一个特定大小的文本文件,用户输入大小。我所需要知道的就是如何使文件更快。目前创建一个10mb的文件大约需要15秒。我必须把时间减少到最多5秒。我该怎么做?目前,这就是我制作文件的方式

void create_file()
{
    int size;
    cout<<"Enter size of File in MB's : ";
    cin>>file_size;
    size = 1024*1024*file_size;   // 1MB = 1024 * 1024 bytes
    ofstream pFILE("my_file.txt", ios::out);

    for(int i=0; i<size; i++)   //outputting spces to create file
        pFILE<<' ';

    pFILE.close();
}
void创建_文件()
{
整数大小;
coutfile_大小;
size=1024*1024*文件大小;//1MB=1024*1024字节
流pFILE(“my_file.txt”,ios::out);

对于(int i=0;i您一次只填充一个字符。相反,您可以使用
new
分配更大的内存块,然后立即写入更大的内存块以加快进程。您可以在分配的内存上使用
memset
,以防止内存中包含字节字符。但也可以查看有关duplic的注释问题是,如果文件最初不需要特定内容,还有更快的方法。

您一次只填充一个字符。相反,您可以使用
new
分配更大的内存块,然后立即写入更大的内存块以加快处理过程。您可以在分配的内存上使用
memset
来预处理内存中有字节字符的vent。但也可以查看关于重复问题的注释,如果文件最初不需要特定内容,则有更快的方法。

这里是一个简单的示例,但没有错误检查

假设您想要1000码:

#include <fstream>   

int main () {
  int size = 1000;
  const char* filename= "file.txt";
  std::ofstream fout(filename);

  fout.fill (' ');
  fout.width (size);
  fout << " ";

  return 0;
}
#包括
int main(){
int size=1000;
const char*filename=“file.txt”;
std::ofstreamfout(文件名);
fout.fill(“”);
宽度(尺寸);

fout这里是一个简单的样本,但没有错误检查

假设您想要1000码:

#include <fstream>   

int main () {
  int size = 1000;
  const char* filename= "file.txt";
  std::ofstream fout(filename);

  fout.fill (' ');
  fout.width (size);
  fout << " ";

  return 0;
}
#包括
int main(){
int size=1000;
const char*filename=“file.txt”;
std::ofstreamfout(文件名);
fout.fill(“”);
宽度(尺寸);

如果你只是想创建一个大文件,你不需要填充文件中的所有字节,这会使它变慢,只要告诉文件系统你想要多大就行了

在Linux上,使用

Windows使用


它们都可以在不到几秒钟的时间内创建一些千兆字节的未初始化文件。

如果您只想创建一个大文件,则不必填充文件中的所有字节,这会使创建速度变慢,只需告诉文件系统您要多大即可

在Linux上,使用

Windows使用


这两种方法都可以在不到几秒钟的时间内创建一些千兆字节的未初始化文件。

这是相当低效的。我假设询问者希望文件最初填充空格,而不仅仅是创建文件。更新了答案以澄清这一点。我确实看到了重复的问题,但是当我使用这些方法时,使用了大小为1024 a的缓冲区nd使用FPUT将其写入文件,文件创建速度更快,但我也将这个愚蠢的字符串写入文件“Íýýý««««««««««»ýþþ”与空格一起。我应该如何删除它?如上所述:在分配的内存上使用
memset
将缓冲区设置为“”。我使用了memset,但这个“Íýýý««««««««««««««««««î»ýýþ字符串仍然在那里,这是相当低效的。我假设asker希望文件最初用空格填充,而不是创建文件。Up我确实看到了重复的问题,但是当我使用这些方法时,使用大小为1024的缓冲区并使用FPUT将其写入文件,文件的创建速度更快,但是我也将这个愚蠢的字符串写入文件“Íýýýý«««««««««««««îý与空格一起。我应该如何删除它?如上所述:在分配的内存上使用
memset
将缓冲区设置为“”。我使用了memset,但这个“Íýýýý««««««««««««««îýý
truncate("data.txt",1024*1024*1024);
SetFilePointer (hFile, 1024*1024*1024, NULL, FILE_BEGIN);