2012-09-04 11 views
13

मैं कुछ सी ++ और पायथन प्रोग्राम का परीक्षण करने के लिए ideone ऑनलाइन दुभाषिया (http://ideone.com/) का उपयोग कर रहा हूं। मैं एसटीडीआईएन इनपुट का उपयोग करने के बजाय कमांड लाइन तर्क कैसे निर्दिष्ट करूं?विचारधारा का उपयोग करते समय कमांड लाइन तर्कों को कैसे पास किया जाए?

+0

मैं क्या बता सकते हैं, ऐसा लगता है आप कर सकते हैं नहीं लगती है। –

उत्तर

9

की तरह आप नहीं कर सकते लगता है अनुकरण करने के लिए प्रारंभ, लेकिन एक त्वरित हैक चाल करना चाहिए:

static char * const ARGV[] = { "myprog", "hello", "world", NULL }; 

int main(int argc, char * argv[]) 
{ 
    argc = 3; 
    argv = ARGV; 

    // ... 
} 

या में मानक इनपुट कन्वर्ट तर्क:

#include <vector> 
#include <string> 
#include <iterator> 
#include <iostream> 

std::vector<char *> fabricate(std::vector<std::string> & v) 
{ 
    std::vector<char *> res(v.size() + 1, NULL); 
    for (std::size_t i = 0; i != v.size(); ++i) { res[i] = &v[i][0]; } 
    return res; 
} 

std::vector<std::string> args_vector((std::istream_iterator<std::string>(std::cin)), std::istream_iterator<std::string>()); 

std::vector<char *> argv_vector = fabricate(args_vector); 


int main(int argc, char * argv[]) 
{ 
    argc = args_vector.size(); 
    argv = argv_vector.data(); 

    // ... 
} 
+0

मुझे लगता है कि ऐसा करना होगा। पाइथन कार्यक्रमों के बारे में कैसे? – lifebalance

+0

@ जीवनशैली: गलती ... "इसी तरह"? :-) –

+0

मैं दूसरा दृष्टिकोण पसंद करता हूं। कुछ समकक्ष पायथन कोड की भी सराहना करेंगे। धन्यवाद! – lifebalance

2

बस आदेश पंक्ति तर्क

static char *argv[] = {"program_name", "1st argument", "2nd argument", NULL}; 
static int argc = 3; 
int main() { 

} 
5

पायथन में आप सी इस तरह की एक hardcode:

import sys 

print sys.argv 
sys.argv[1:] = ["test1", "test2"] 
print sys.argv 

हो जाएगा ताकि उत्पादन:

['prog.py'] 
['prog.py', 'test1', 'test2'] 

stdin से पढ़ने के लिए:

import sys 
import shlex 

print sys.argv 
sys.argv[1:] = shlex.split(None) 
print sys.argv 
+0

आप stdin से कमांड लाइन को पार्स करने के लिए shlex.split() का उपयोग कर सकते हैं (अनुकरण करने के लिए कि वह तर्क कैसे पारित करेगी। – jfs

+0

@ जेएफ। सेबेस्टियन भी बेहतर, अद्यतन। – jleahy

संबंधित मुद्दे