簡體   English   中英

存儲NUL字符(ASCII 0)

[英]Storing NUL characters (ASCII 0)

我用C ++創建了一個程序,它提示用戶輸入文件名和所請求的文件大小。 程序檢查所請求的文件大小是否大於實際文件大小,然后在文件末尾添加空字符(代碼為0字符),直到達到所請求的文件大小。
我這樣做了(使用fstream):

for (blah blah) {
    file << '\0'; // ('file' is an fstream object)
}

它就像我想要的那樣工作。 我知道這是一個糟糕的代碼,因為它可能通過向它發送許多調用來折磨硬盤(順便說一下它很慢)。 這只是出於測試原因。 然后,由於這個問題,我決定創建一個存儲NUL字符的變量,並立即將整個變量保存到文件中(不單獨保存每個字符)。
然后問題出現了...因為NUL字符(也稱為null-terminator),終止字符串,我無法以任何方式存儲這些零。
我已經嘗試了一系列字符,一個字符串甚至一個字符串流,但沒有一個工作(stringstream有一些有趣的東西,當我使用它時,文件的內容看起來像這樣: 0x47c274 )。 無論如何,它沒有像我預期的那樣工作。
有沒有有效的方法來存儲空字符數組?

將它們存儲在一個字符數組中,並使用ostream :: write將數組寫入該文件。

這是一個例子:

#include <algorithm>
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
  ofstream fout("pokemon");
  char buffer[1000];
  std::fill(buffer, buffer + 1000, '\0');
  fout.write(buffer, sizeof(char) * 1000);
  return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM