一個程序,我想文件路徑分配給從終端程序,指定文件路徑,從終端
我的程序裏面的代碼是這樣的:
#include<iostream>
int main{
fstream file;
file.open("path",ios::in);
...
,我想使用
./myprogram /filepath
在終端,讓我的程序接受的路徑, 我怎麼能實現呢?
一個程序,我想文件路徑分配給從終端程序,指定文件路徑,從終端
我的程序裏面的代碼是這樣的:
#include<iostream>
int main{
fstream file;
file.open("path",ios::in);
...
,我想使用
./myprogram /filepath
在終端,讓我的程序接受的路徑, 我怎麼能實現呢?
您可以使用命令行參數。但是你的主體應該如下圖所示。 其中argc
顯示參數計數(包括可執行文件本身)和argv
顯示參數(包括可執行文件本身的名稱)。所以默認爲argc = 1
,argv = {"myProgram"}
。 (如果你的輸出文件是「myProgram」)
int main (int argc, char* argv[])
{
fstream file;
if (argc == 2){
file.open(argv[1],ios::in);
}else{
// handle the error
}
}
當你運行程序:
./myProgram "/filepath"
但使用argv[1]
,以避免分段錯誤,當沒有前一定要檢查argc
,附加的參數。
你的主要函數聲明應該是這樣的:
int main (int argc, char *argv[])
的整數,ARGC是參數計數。它是從命令行傳遞給程序的參數的數量,包括程序的名稱。
字符數組指針是所有參數的列表。
我建議使用Boost.Program_options
解析參數。
我不知道你在用什麼編譯器,但是'int main {'好像它不應該編譯。 – crashmstr