सी ++ समस्या ifstream का उपयोग कर एक .txt फ़ाइल खोलने की कोशिश कर

वोट
-1

कोड का यह छोटा-सा एक पाठ फ़ाइल के माध्यम से देखने के लिए और है कि बाद में मेरे कार्यक्रम में, आप (आईडी) उसी खाता नंबर के साथ दो खातों की त्रुटि के बिना सही खाते पा सकते हैं तो खाता नंबर पहले से ही लिखा गया है की पहचान करने के लिए बनाया गया है । लेकिन कोई बात नहीं मैं अपने डबल बैकस्लैश, फ़ॉरवर्ड स्लैश, या ifstream वस्तु के लिए स्थान में डबल फ़ॉरवर्ड स्लैश का उपयोग कर कि क्या क्या करते हैं,; मैं हमेशा पाने के आउटपुट के रूप में फ़ाइल नहीं मिल सकता है।

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

int main() {
    ifstream accountsread(‪G:/Coding/Test/test/test/accounts.txt);
    if (accountsread.is_open()) {
        int tempAccno;
        std::string tempname;
        char tempchar;
        int accountsfound = 0;
        int input;

std::cout << Enter the ID of the account \n;
        cin >> x;

        while (!accountsread.eof()) {
            accountsread >> tempAccno;
            if (tempAccno == input) {
                accountsfound++;
            }
            else {}


        }
        if (accountsfound > 0) {
            cout << number found;
        }
        else {
            cout << number not found;
        }
    }
    else {
        cout << cannot find file;
    }
}

खिड़कियों में, पाठ फ़ाइल का स्थान जी है: \ कोडिंग \ टेस्ट \ परीक्षण \ परीक्षण \ accounts.txt

03/12/2019 को 00:03
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

std::ifstreamसंबंधित पथ के साथ-साथ पूर्ण लोगों का उपयोग कर सकते हैं। आपकी समस्या के लिए, मैं में देखने की सलाह देते होता <filesystem>हैडर एसटीएल से यदि आप वास्तव में अपनी फ़ाइल के लिए एक निरपेक्ष पथ की जरूरत है। हालांकि, अगर यह आपके काम कर निर्देशिका उसी निर्देशिका में है, तो आप पूर्ण पथ का उपयोग करने की जरूरत नहीं है। यहाँ कैसे मैं अपने कार्य को पूरा करेंगे

#include <iostream>
#include <fstream>
#include <string>  // Should include since you're using std::string

// Note that I am NOT "using namespace std;"

int main()
{
    std::ifstream accountsRead("accounts.txt");
    if (accountsRead.is_open())
    {
        int account_id;
        bool account_found = false;

        std::cout << "Enter the ID of the account: ";
        while (!(std::cin >> account_id))
        { // This loop handles if the user inputs non-number
            std::cout << "Please enter a NUMBER below!\n";
            std::cout << "Enter: ";
            std::cin.ignore(10000, '\n');
            std::cin.clear();
        }

        int tmpAccNum;
        while (accountsRead >> tmpAccNum)
        { // This loop reads the file, line by line, into tmpAccNum
            if (tmpAccNum == account_id)
            {
                account_found = true;
                break;
            }
        }

        if (account_found)
        {
            std::cout << "Number found!" << std::endl;
        }
        else
        {
            std::cout << "Number not found..." << std::endl;
        }
    }
    else
    { // Error opening file
        std::cout << "File not found or is corrupted" << std::endl;
    }
}

अपने कोड के बारे में कुछ बातें शैलीगत बोल। सबसे पहले, आप कभी नहीं होना चाहिए using namespace std, और (यदि आप किसी कारण से कर रहे हैं) वहाँ मिश्रण और निर्दिष्ट करने मिलान करने के लिए एक कारण नहीं है stdकेवल कुछ पर नाम स्थान stdसदस्य हैं। दूसरे, आप एक निर्दिष्ट करने की आवश्यकता नहीं है elseकि हर के लिए if-statement, और आप शायद नहीं करना चाहिए जब तक कि वहाँ वास्तव में अगर अमल करने के लिए आदेशों हैं elseमामले पहुँच जाता है।

संपादित करें

आप अभी भी एक निरपेक्ष पथ की जरूरत है, यहाँ आप यह कैसे कर सकते हैं:

#include <filesystem>

int main()
{
    // Create path object for the file path
    std::filesystem::path file_path("G:\Coding\Test\test\test\accounts.txt");

    // The '.string()' method for a 'std::path' object returns the string
    // version of the path, so you can use it with an 'std::ifstream'
    std::ifstream accounts(file_path.string());  // Opens file via 'ifstream'
    /* And so on... */
}

03/12/2019 को 01:18
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more