मैं पॉइंटर्स के लिए नया हूं और मेरे पास फ़ाइल से 2 डी सरणी पढ़ने का कार्य है। मुझे उस फ़ंक्शन का उपयोग करना है जो पैरामीटर (चार * पथ) लेता है। जैसा कि आप देख सकते हैं कि मैं मैन्युअल रूप से टाइप कर रहा हूं जिसमें मैं कोड में कौन सी टेक्स्ट फ़ाइल खोलना चाहता हूं लेकिन मुझे लगता है कि मुझे पॉइंटर्स का उपयोग करना होगा क्योंकि यह पैरामीटर है मेरा 'read_from_file' फ़ंक्शन। मैं कमांड लाइन पर उपयोगकर्ता इनपुट ले रहा हूं यह देखने के लिए कि वे नीचे दिए गए कोड का उपयोग करके कौन सी फाइल पढ़ना चाहते हैं। मैं अनिश्चित हूं कि पैरामीटर के रूप में char* argv[] का उपयोग कैसे करें जो मेरे read_from_file(char *path) पर पास किया जाएगा ताकि मैं उपयोगकर्ता द्वारा बताई गई फ़ाइल से पढ़ सकूं। फ़ाइल से पढ़ने के लिए मेरा कोड पूरी तरह से ठीक काम करता है लेकिन मुझे पॉइंटर्स के साथ कुछ मदद चाहिए।

int main(int argc, char* argv[]){

int read_from_file(char *path){



ifstream infile("file.txt");
string line;

std::vector<std::vector<int> > num;

std::string line;
while (std::getline(infile, line))

{
    std::vector<int> values;
    std::istringstream iss(line);
int value;
while (iss >> value)
{
    values.push_back(value);
}

num.push_back(values);
}
}
0
anon1 10 नवम्बर 2020, 06:18

1 उत्तर

सबसे बढ़िया उत्तर

यदि आप कुछ भी फैंसी नहीं चाहते हैं:

// Note: argv[0] is the name of the program itself, 1..n are actual arguments
for (int i = 1; i < argc; ++i) {
  read_from_file(argv[i]);
}

फिर आप इसे अपने फ़ंक्शन में उपयोग कर सकते हैं:

std::ifstream infile(path);

आम तौर पर सी ++ में आपको इस तरह के तर्कों को const char* के रूप में निर्दिष्ट करना चाहिए।

1
tadman 10 नवम्बर 2020, 03:30