C ++ sorun lfStream kullanarak bir .txt dosyası açmaya çalışırken

oy
-1

Bu kod küçük bit daha sonra benim programda üzerinde, aynı hesap numarası ile iki hesap hatası (id) olmadan doğru hesabı bulabilmesi için bir metin dosyası üzerinden bakmak ve zaten yazılmış hesap numaralarını tespit için tasarlanmıştır . Ama hayır ben onun çift ters eğik çizgi, düz eğik çizgi veya lfStream nesne için bir konumda çift sağa doğru eğik çizgiler kullanılarak, ister ne yaptığım önemli; ben hep çıktı olarak dosyayı bulamıyor olsun.

#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;
    }
}

pencerelerde, metin dosyasının konumu G: \ \ test \ test \ test \ accounts.txt Kodlama

Oluştur 03/12/2019 saat 00:03
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
0

std::ifstreamgöreli yollar aynı zamanda mutlak olanlar kullanılabilir. Senin sorun için, ben içine bakarak öneririm <filesystem>başlığında eğer STL gerçekten dosyanıza mutlak bir yol gerekir. Sizin çalışma dizini olarak aynı dizinde ise Ancak, mutlak yolları kullanmaya gerek yoktur. İşte senin görevi başarmak istiyorum nasıl

#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;
    }
}

Kuralların bir kaç şey üslup konuşma. Öncelikle, olmamalıdır using namespace std(eğer nedense iseniz) karıştırın ve belirterek eşleştirmek için bir neden yoktur değildir ve stdsadece bazı ad stdüyeleri. İkinci olarak, bir belirtmeniz gerekmez elseher için if-Bildirim ve muhtemelen orada sürece aslında, yürütülecek komutlardır olmamalıdır elsedurum ulaşılır.

Düzenle

Hala mutlak bir yol gerekiyorsa, burada bunu nasıl geçerli:

#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... */
}

Cevap 03/12/2019 saat 01:18
kaynak kullanıcı

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