1

我有一个要求,我需要从命令行调用 C++ 应用程序,并且需要将 int 类型的二维数组传递给它。谁能让我知道如何做到这一点,以及如何使用 argv 参数在 C++ 应用程序中解释它

提前致谢。

4

2 回答 2

6

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*指针。换句话说,您需要转换所有参数ints。

于 2012-10-31T11:12:23.237 回答
1

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.

于 2012-10-31T11:22:53.847 回答