2017-01-01 80 views
1

空格Python腳本的argv我有幾個Python腳本來處理從互聯網的一些API收到JSON對象。現在,我的主要應用程序是用C++編寫的(它用於GUI和我的API密鑰保護)。我從用戶接收2個輸入。他們中的一個是暱稱,可以有空格。現在,當我通過他們在參數傳遞給C++程序(目前其只寫了一個控制檯應用程序),它工作時,我只是用"",但後來:解析與C++

W:\src>XD "nickname with spaces" summoner_by_name 
nickname with spaces 
summoner_by_name 
python main.py API_KEY nickname with spaces summoner_by_name 

ARGV: 
main.py 
API_KEY 
nickname 
with 
spaces 
summoner_by_name 
END OF ARGV 

所以第一部分是這個代碼的一部分:

int main(int argc, char** argv){ 
    std::string name = argv[1]; 
    std::string command = argv[2]; 
    std::cout << name << std::endl; 
    std::cout << command << std::endl; 
    std::cout << python + API_KEY + " " + name + " " + command << std::endl; 
    system((python + API_KEY + " " + name + " " + command).c_str()); 
    return 0; 
} 

,第二部分是這個代碼的一部分:

def main(argv): 
    API_KEY = argv[1] 
    NAME = argv[2] 
    print("ARGV:") 
    for i in argv: 
     print(i) 
    print("END OF ARGV") 

所以它看起來像C++不""經過2個值,這就是爲什麼它不幹活g(我試圖用cmdline自行傳遞它 - 它工作)。它雖然在Linux上工作。我怎樣才能用空格來傳遞這些值?

回答

1

你可能需要自己引用的字符串構建命令行時系統調用:

system((python + API_KEY + " \"" + name + "\" " + command).c_str());