2012-10-31 69 views
1

我有一個需求,我需要從命令行調用一個C++應用程序,並且需要將int類型的二維數組傳遞給它。任何人都可以請讓我知道該怎麼做,以及如何使用的argv參數提前使用命令行將二維數組傳遞給C++

感謝解釋它在C++應用程序。

+1

可能更容易提供標準輸入數組。 –

回答

5

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。

1

我會建議通過文件作爲唯一的參數。或者@j_random_hacker建議在stdin上使用相同格式的數據。如果沒有人需要編輯它,它可能是一個二進制文件。一種可能的格式:

4字節=第一尺寸的大小 4字節=第二維的尺寸 4字節*的陣列

讀取時的第二=內容第一*大小的大小,一切都對齊。只需讀取每四個字節的int並如上解釋。

如果它需要人類可讀,我會做csv或空格分隔。在這種情況下不需要指定尺寸,因爲每一行都以換行符結束。