【问题标题】:write pointer array to a file将指针数组写入文件
【发布时间】:2012-06-22 08:41:48
【问题描述】:

我想知道如何写一个指针数组:

short* myArray 

还有一个指针

short[] myArray

到 C++ 中的文件?

【问题讨论】:

  • 你要写指针指向的地址或对象吗?
  • 我要写数组的值
  • 遍历数组并写入每个值。
  • @olidev,如果您将数组传递给要打印的函数,则数组会衰减到一个指针,因此sizeof(myArray) 的大小将是short*。您需要传入元素的数量。此外,正如这个 C++ 建议使用 std::vector<short>std::array
  • short* myArray 声明一个指针,而不是数组,short[] myArray 声明一个数组,而不是指针。你能举例说明文件应该是什么样子吗?

标签: c++


【解决方案1】:

示例:

char phrase[30]="whatever\n";

phrase 已经是一个指针。为了让编译器访问字符串,它访问字符串开头的内存位置:

phrase[0]=*phrase 这是内存中的 w 字符,地址由指针短语给出(好吧我们称它为字符串数组,但它确实是一个指针,指定为时只是一个字符串数组 phrase[30]。 所以如果短语是数组开头的内存地址 - 字符w 然后 (phrase+1) 是字符 h 的内存地址,由 *(phrase+1) 给出,与 phrase[1] 相同 (phrase+2) 是字符 a 的内存地址,由 *(phrase+2) 给出,与 phrase[2] 相同 等等……

【讨论】:

    【解决方案2】:

    为此使用ofstream 类。使用open() 方法打开文件,然后遍历数组并使用<< 运算符将每个short 写入文件。

    你可以通过做得到数组的大小(short[] array

    int arraySize = sizeof(array) / sizeof(short);
    

    而对于指针 (short* array),您需要自己跟踪它指向的数组的大小。

    【讨论】:

    • 获取大小的更好方法是template<typename T, size_t N> size_t size( T (&array)[N] ) { return N; }。如果你没有数组(但只有一个指针),这将无法编译,而不是给出错误的答案。
    猜你喜欢
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 2021-11-12
    • 2012-09-20
    相关资源
    最近更新 更多