Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;将pwrite(),pread()数据写入文本文件_C++_Pointers - Fatal编程技术网

C++ C++;将pwrite(),pread()数据写入文本文件

C++ C++;将pwrite(),pread()数据写入文本文件,c++,pointers,C++,Pointers,我必须在文本文件中写入()个字符,每个字符代表一个字节。 此外,我需要将整数写入文本文件,因此12也必须是一个字节,而不是2个字节(即使是两个字符) 我使用char*指针来表示字符和整数,但我被卡住了,因为文本填充会打印出整数(@,颠倒?)的混乱值,就像我写()指针[0]=105时一样;105在text.txt文件中翻译“i”(pread()读作“i”),但105在翻译过程中不知何故丢失了 你知道如何正确地编写()/pread()吗 ofstream file; file.open("text.

我必须在文本文件中写入()个字符,每个字符代表一个字节。 此外,我需要将整数写入文本文件,因此12也必须是一个字节,而不是2个字节(即使是两个字符)

我使用char*指针来表示字符和整数,但我被卡住了,因为文本填充会打印出整数(@,颠倒?)的混乱值,就像我写()指针[0]=105时一样;105在text.txt文件中翻译“i”(pread()读作“i”),但105在翻译过程中不知何故丢失了

你知道如何正确地编写()/pread()吗

ofstream file; file.open("text.txt");
char *characters = new char;
characters[0] = 105;
cout << pwrite(3, characters, 1, 0);
流文件的
;打开(“text.txt”);
字符*字符=新字符;
字符[0]=105;

不能将其分解成块:

“我必须在文本文件中写入()个字符,每个字符代表一个字节”

根据定义,每一个都是一个字节,并且您不需要编写区域设置感知的多字节字符或Unicode衍生物,因此我认为您可能已经讨论了这一点

此外,我需要将整数写入文本文件,因此12也必须是一个字节,而不是两个字节(即使是两个字符)

您正在描述整数数据的二进制写入。但是,请记住,作为数字表示的“整数”可以大于“一个字节”表示的数字。如果要写入可以用单个字节表示的整数,您可以选择:

  • 对于有符号数据,值的范围为[-128127]
  • 对于无符号数据,值的范围为[0,255]
  • 这些是单个八位字节中整数值的限制

    “我正在使用char*指针来表示字符和整数,但由于文本填充会打印出混乱的整数值(@,颠倒?),所以我被卡住了。”

    我们之前讨论过的字符的字符指针,可能会很好。整数将不会被忽略。根据您的描述生成的文件将不是字面意义上的“文本”文件。它将包含字符数据(您的字符缓冲区)和二进制数据(您的整数)。请记住,一个值为0x01的单字节内的整数就是第一位设置的单八位字节。表示ASCI字符的字节“1”的值为0x31(请参见任意值),表示EBCDIC的值为0xF1(请勿询问)。举个例子,**您不能在一个字节中写入值12,并在文件中显示“文本”(字符)数据。单字节整数值12将在文件中表示为单字节值0x0C。试图将其视为“文本”是行不通的;它是不可打印的ASCI。实际上,0x0C的ASCI值实际上是一个表单馈送控制字符

    一句话,如果您不知道ASCI字符和整数字节之间的区别,那么解释其工作原理只会让您更加困惑

    “就像当I pwrite()指针[0]=105;105在text.txt文件中翻译'I'(而pread()读作'I')时,105不知何故在翻译中丢失了”

    请参阅本答案中多个地方的ASCI图表。字节值105实际上是字符“i”的ASCI值。105没有丢失;它将显示为它所代表的字符


    最后,
    pwrite()。它不是C或C++标准的一部分。也就是说,
    pwrite()
    的第一个参数应该从系统调用中获得。除非通过受支持的api打开文件描述符,否则决不应使用假定由其他api调用打开的文件描述符。此问题中的代码没有。

    将其分解为块:

    “我必须在文本文件中写入()个字符,每个字符代表一个字节”

    根据定义,每一个都是一个字节,并且您不需要编写区域设置感知的多字节字符或Unicode衍生物,因此我认为您可能已经讨论了这一点

    此外,我需要将整数写入文本文件,因此12也必须是一个字节,而不是两个字节(即使是两个字符)

    您正在描述整数数据的二进制写入。但是,请记住,作为数字表示的“整数”可以大于“一个字节”表示的数字。如果要写入可以用单个字节表示的整数,您可以选择:

  • 对于有符号数据,值的范围为[-128127]
  • 对于无符号数据,值的范围为[0,255]
  • 这些是单个八位字节中整数值的限制

    “我正在使用char*指针来表示字符和整数,但由于文本填充会打印出混乱的整数值(@,颠倒?),所以我被卡住了。”

    我们之前讨论过的字符的字符指针,可能会很好。整数将不会被忽略。根据您的描述生成的文件将不是字面意义上的“文本”文件。它将包含字符数据(您的字符缓冲区)和二进制数据(您的整数)。请记住,一个值为0x01的单字节内的整数就是第一位设置的单八位字节。表示ASCI字符的字节“1”的值为0x31(请参见任意值),表示EBCDIC的值为0xF1(请勿询问)。举个例子,**您不能在一个字节中写入值12,并在文件中显示“文本”(字符)数据。单字节整数值12将在文件中表示为单字节值0x0C。试图将其视为“文本”是行不通的;它是不可打印的ASCI。实际上,0x0C的ASCI值实际上是一个表单馈送控制字符

    一句话,如果您不知道ASCI字符和整数字节之间的区别,那么解释其工作原理只会让您更加困惑

    “像w