我已经在C++中创建了一个程序,提示用户输入文件名和请求的文件大小。程序检查请求的文件大小是否大于实际的文件大小,然后在文件末尾添加空字符(代码为0
的空字符),直到达到请求的文件大小。
我已经做了这样的(用fstream的):存储NUL字符(ASCII 0)
for (blah blah) {
file << '\0'; // ('file' is an fstream object)
}
和它的工作,就像我想它。我知道这是一个糟糕的代码,因为它可能会通过向它发送很多调用来折磨硬盘(而且速度很慢)。这只是出于测试的原因。然后,由于这个问题,我决定创建一个存储NUL字符的变量,并将整个变量一次保存到文件中(不单独保存每个字符)。
然后问题出现......因为NUL字符(也称为空终止符),终止字符串,我无法以任何方式存储这些零。
我试过了一个字符串,一个字符串,甚至一个stringstream,但没有任何工作(有关stringstream的一些有趣的事情,当我使用它时,该文件的内容如下所示:0x47c274
)。无论如何,它没有像我预期的那样工作。
是否有任何有效的方式来存储空字符数组?
只是一个建议,你指的是ASCII码0作为NUL,而不是为NULL。 NULL ist实际的空指针和NUL('\ NUL')是ASCII 0. – LukeN 2010-10-03 00:47:23
我想,在stringstream的情况下,你发送一个指向它的流而不是对象本身。此外,一个字符串应该工作,它可能包含\ 0没有问题。 – liori 2010-10-03 01:00:07
我现在看到;我的问题是将它保存到文件中,而不是存储它:) – rhino 2010-10-03 01:06:20