2017-08-12 70 views
0

我試圖做一個自定義命令,但它不能正常工作。 我的文件名爲hello.exe,它位於PATHC:\文件夾中。這是代碼:從CMD運行一個.exe並自動將參數傳遞給它

#include "stdafx.h" 
#include <iostream> 
#include <string> 

using namespace std; 

int main(){ 
    string name; 
    getline(cin, name); 
    cout << "Hello, " << name << "!\n"; 
    return EXIT_SUCCESS; 
} 

我的意圖是從運行CMD可執行像這樣:hello Ulisse,它應該輸出Hello, Ulisse!。然而,它似乎並沒有工作,當我運行該exe文件,我得到一個黑色的控制檯等待我的名字被輸入。 那麼,有什麼辦法可以讓參數名稱直接從CMD傳遞給變量name,因此在第一次運行命令後不必輸入名稱?

+4

'INT主(INT ARGC,CHAR *的argv []){性病::法院<< 「你好,」 << ARGV [1]「; ''。有關詳細信息,請參閱[this](http://en.cppreference.com/w/cpp/language/main_function)。 –

回答

0

我只看到這個實現使用argc和argv。以下是來自以下網站的片段:http://www.cprogramming.com/tutorial/lesson14.html

#include <fstream> 
#include <iostream> 

using namespace std; 

int main (int argc, char *argv[]) 
{ 
    if (argc != 2) // argc should be 2 for correct execution 
    // We print argv[0] assuming it is the program name 
    cout<<"usage: "<< argv[0] <<" <filename>\n"; 
    else { 
    // We assume argv[1] is a filename to open 
    ifstream the_file (argv[1]); 
    // Always check to see if file opening succeeded 
    if (!the_file.is_open()) 
     cout<<"Could not open file\n"; 
    else { 
     char x; 
     // the_file.get (x) returns false if the end of the file 
     // is reached or an error occurs 
     while (the_file.get (x)) 
     cout<< x; 
    } 
    // the_file is closed implicitly here 
    } 
} 
0

您有兩個選擇。

Using argc and argv parameters,或者你可以把你想要的所有輸入的.txt文件和use < command

我不認爲你正在尋找的第二個選項,所以嘗試的第一個,據我所知這是唯一的將參數傳遞給C++程序的方法

所以你的代碼應該看起來像這樣。

#include "stdafx.h" 
#include <iostream> 
#include <string> 

using namespace std; 

int main(int argc, char **argv){ 
    string name; 
    if(argc == 1){ 
     cout << "Whoops, you need to put your name" << endl; 
     return EXIT_FAILURE; 
    } 
    name = argv[1]; 
    cout << "Hello, " << name << "!\n"; 
    return EXIT_SUCCESS; 
} 

ARGC在你傳遞給主要功能和argv參數的數字包含的參數,總是至少有一個參數,.exe文件本身的名稱,因此,如果你傳遞一個參數,在你的情況下一個名字,argc是2,如果你傳遞了n個參數,那麼argc是n + 1。