यह मानते हुए कि file.txt में रैंडम फाइलों के नाम इस प्रकार हैं:

a.cpp
b.txt
c.java
d.cpp
...

विचार यह है कि मैं फ़ाइल एक्सटेंशन को फ़ाइल नाम से सबस्ट्रिंग के रूप में अलग करना चाहता हूं, और फिर डुप्लिकेट देखने के लिए एक्सटेंशन के बीच तुलना करना चाहता हूं।
यहाँ मेरा कोड है:

#include<iostream>
#include<fstream>
#include<string>
using namespace std;

    int main()
    {

    ifstream infile;   
    infile.open("file.txt"); 

    string str,sub;
    int count,pos=0;

    while(infile>>str)  
    {
    pos=str.find(".");
    sub=str.substr(pos+1);
    
    
    if(sub==?)
        // I stopped here
        count++;  
    
    }
    cout<<count;    
    return 0;
    }

मैं सी ++ के लिए नया हूं इसलिए मुझे नहीं पता कि अगली पंक्ति पर जाने के लिए किस फ़ंक्शन का उपयोग करना है, मैंने इसे समझने के लिए बहुत कुछ खोजा, लेकिन कुछ भी नहीं।

0
user14735245 6 नवम्बर 2021, 13:50
आउटपुट क्या होना चाहिए जिसकी आप अपेक्षा करते हैं और क्या आप केवल फाइलों के नाम (एक्सटेंशन को छोड़कर) या फाइलों के पूरे नाम (एक्सटेंशन सहित) की तुलना करना चाहते हैं?
 – 
Aanchal Sharma
6 नवम्बर 2021, 13:55
आउटपुट बार-बार फ़ाइल एक्सटेंशन की गिनती होना चाहिए
 – 
Ahmed Kena
6 नवम्बर 2021, 13:59
मैं केवल एक्सटेंशन की तुलना करना चाहता हूं
 – 
Ahmed Kena
6 नवम्बर 2021, 14:00

1 उत्तर

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

आप इनपुट फ़ाइल में प्रत्येक एक्सटेंशन से संबंधित गणना मुद्रित करने के लिए निम्न प्रोग्राम का उपयोग कर सकते हैं। गिनती का ट्रैक रखने के लिए प्रोग्राम std::map का उपयोग करता है।


#include <iostream>
#include <map>
#include <fstream>

int main()
{
   
    std::ifstream inputFile("input.txt");
    
    std::map<std::string, int> countExtOccurence; //this will count how many time each extension occurred
    
    std::string name, extension;
    if(inputFile)
    {
        while(std::getline(inputFile, name, '.')) //this will read upto a . occurrs 
        {
            std::getline(inputFile, extension, '\n');
            {
                countExtOccurence[extension]++; //increase the count corresponding to a given extension
            }
        }
    }
    else 
    {
        std::cout<<"input file cannot be opened"<<std::endl;
    }
    inputFile.close();
    
    //lets print out how many times each extensino occurred in the file 
    for(const std::pair<std::string, int> &pairElem: countExtOccurence)
    {
        std::cout<<pairElem.first<<" occurred: "<<pairElem.second<<" time"<<std::endl;
    }
    return 0;
}

उपरोक्त प्रोग्राम का आउटपुट यहां देखा जा सकता है।

2
Anoop Rana 6 नवम्बर 2021, 14:18