Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.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++;_C++_File Io_Multidimensional Array - Fatal编程技术网

C++ 将二维数组写入输出文件-c++;

C++ 将二维数组写入输出文件-c++;,c++,file-io,multidimensional-array,C++,File Io,Multidimensional Array,我试图将2d数组写入输出文件,除了创建.getline函数将数组从文件中提取出来外,其他都可以正常工作。我的问题是把字符串的长度。我当前的行代码是 getline(myArray,[10][10],'\n') 但它不喜欢把字符串长度放在方括号里,我该怎么办 提前感谢编译,myArray必须是char或char*的数组。特别是,它是一个一维数组。要读取多个维度,需要分别读取每一行。第二个参数是数组中要读取和存储的chars的最大数目减去1 要开始从文件中读取内容,首先应该了解文件是如何写入的。我希

我试图将2d数组写入输出文件,除了创建.getline函数将数组从文件中提取出来外,其他都可以正常工作。我的问题是把字符串的长度。我当前的行代码是

getline(myArray,[10][10],'\n')

但它不喜欢把字符串长度放在方括号里,我该怎么办


提前感谢编译,
myArray
必须是
char
char*
的数组。特别是,它是一个一维数组。要读取多个维度,需要分别读取每一行。第二个参数是数组中要读取和存储的
char
s的最大数目减去1

要开始从文件中读取内容,首先应该了解文件是如何写入的。我希望您知道该文件是如何创建的,但您没有在问题中描述。了解文件是如何编写的对于了解如何从中读取至关重要。请出示一些代码。

请尊重Rob Kennedy,他在歪曲C/C++如何处理多维数组

考虑int-foo[10][10]和int-foo[100]。在这两种情况下,foo都是指向包含sizeof(int)*100字节的内存块的指针

int*指针和int foo[10][10]之间存在着细微的差异。特别是关于sizeof()和某些特定于编译器的错误检查。但是,如果需要,我们可以互换处理


也就是说,leachrode无法将getline()的参数2传递为“[10][10]”。他可以传递“10*10*sizeof(foo)”,其中foo是myArray的类型。他还可以传递sizeof(myArray),如果它实际上被声明为数组的话

变量myArray不一定必须是char类型。但是,如果getline()调用正常,myArray数据块中的任何字节都不能具有值“\n”

就我个人而言,我会选择二进制存储。例如:(假设inputFile是iostream对象。)

*但是*,这确实假设您正在二进制兼容系统上读写。我们正在假设编译器如何将该数组存储在内存中。不同的编译器可以做不同的事情。填充和对齐问题可能会造成跨平台噩梦

从可移植性和未来维护的角度来看,单独读取/写入每个数组元素会更好代码方面没有太复杂。就速度而言,iostreams是缓冲的,而且您无论如何都会被磁盘io绑定

参考:


事后思考:-如果myArray不是基本类型(int[],double[]),而是表示对象数组(带有虚拟成员)或指针,则需要一种序列化方法。指针在被读回时不会指向有效内存。

我们肯定需要更多信息。getline函数从文件中读取字符,因此您提供的数组表示法没有多大意义。正如Tfininga所建议的,我们首先需要查看用于将数组写入文件的代码。
 inputFile.write( (const char *)myArray, sizeof(myArray) );
 inputFile.read( (char *)myArray, sizeof(myArray) );