我有一个要求,我需要从命令行调用 C++ 应用程序,并且需要将 int 类型的二维数组传递给它。谁能让我知道如何做到这一点,以及如何使用 argv 参数在 C++ 应用程序中解释它
提前致谢。
我有一个要求,我需要从命令行调用 C++ 应用程序,并且需要将 int 类型的二维数组传递给它。谁能让我知道如何做到这一点,以及如何使用 argv 参数在 C++ 应用程序中解释它
提前致谢。
在argv
你只能传递一个包含字符串的一维数组,它是
char* argv[]
所以,你不能真正传递二维数组,但你可以“模拟”它。
例如,传递 2 个参数,说明矩阵的大小是多少 - 行数和列数,然后一一传递所有元素。
然后解析程序中的参数,知道你将使用什么格式。
例如:如果你想通过
1 2 3
4 5 6
你可以像这样运行你的程序:
./my_program 2 3 1 2 3 4 5 6
这样,您就会知道,即argv[1]
行数,argv[2]
s 列数,它们是二维数组的所有元素,从左上角开始。
不要忘记,那argv
是数组,包含char*
指针。换句话说,您需要转换所有参数int
s。
I would recommend passing a file as the only argument. Or data in the same format on stdin as @j_random_hacker suggests. If no human needs to edit it, it could be a binary file. One possible format:
4 bytes = size of first dimension 4 bytes = size of second dimension 4 bytes * size of first * size of second = contents of array
When reading, everything is aligned. Just read every four byte int and interpret as above.
If it needs to be human readable I would do csv or space-delimited. There would be no need to specify the dimensions in that case because each row ends in newline.