открытие файла в C ++ - PullRequest
0 голосов
/ 22 мая 2018

Я относительно новичок в C ++, и я хотел попрактиковаться в открытии файлов и вставке текста, теперь я понимаю, что это был бы худший способ хранения информации для входа, но я просто решил смоделировать это, как минимумбыть абсолютно случайнымТеперь я чувствую себя хорошо во всех, кроме одного, кажется, что я продолжаю получать ошибки, весь код

#include <iostream>
#include <string>
#include <fstream>
#include <new>
using namespace std;
string login() {
    string username, password;
    cout << "What is your username?\n";
    cin >> username;
    cout << "What is your password, " << username << endl;
    cin >> password;
    //Verify info
    return username;
}
string signup() {
    string username, password, cpass, bio;
    do {
        cout << "What is your username?\n";
        cin >> username;
        cout << "What is your password?\n";
        cin >> password;
        cout << "Confirm password: ";
        cin >> cpass;
        cout << "Describe what you like to do:\n";
        cin >> bio;
    } while (password != cpass);
    ofstream user = new ofstream();
    user("users.txt");
    if (user.is_open()) {
        //Make sure the program is writing to the end of the file!
        user.seekp(0,std::ios::end);
        user << username << endl;
        user << password << endl;
        user << bio << endl;
    } else {
        cout << "Something went wrong with opening the file!";
    }
    user.close();
    return username;
}
int main() {
    string answ;
    cout << "Hello, welcome to wewillscamyou.net, are you already signed up?\n";
    if(answ == "Yes" || answ == "yes") {
        string username = login();
    } else {
        string username = signup();
    }
    return 0;
}

, но я получаю ошибки в этих двух строках, это не из-за опечатки, иМне нужна помощь, потому что это будет работать в Java:

ofstream user = new ofstream();
user("users.txt");

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

ofstream используется для записи в текстовом или двоичном файле.В то время как «новый» используется для выделения памяти.Чтобы записать в конец файла, вам нужно сначала открыть его в режиме «приложения» (app). Он автоматически использует память вашего накопителя, когда он подключится к файлу.

**user.seekp(0,std::ios::end);**

Эта строка кода не является неправильной, но не обязательной.

Замените это

ofstream user = new ofstream();
user("users.txt");
if (user.is_open()) {
    //Make sure the program is writing to the end of the file!
    user.seekp(0,std::ios::end);

    user << username << endl;
    user << password << endl;
    user << bio << endl;
} 

следующим: -

ofstream user("user.txt",ios::app);
if(user)
{
    user << username << endl;
    user << password << endl;
    user << bio << endl;
}
0 голосов
/ 22 мая 2018

Buddy in C ++ new используется для создания динамически распределяемого объекта или объекта, на который у вас есть указатель или для которого вы должны выделить память.Обычно это указатель на объект.

class A {
    public:
        A() { }
};

int main () {
    A a (); // object (created as value)
    A *a = new A(); // notice pointer, I need to allocate memory for it thus I have to use `new`
}

В заключение new в C ++ означает выделить достаточно памяти для этого объекта и дать мне адрес его.Таким образом, чтобы решить вашу ошибку, у вас есть несколько вариантов:

ofstream user ("user.txt");

или

ofstream user;
user = ofstream("users.txt");

или

ofstream user;
user.open("user.txt");
...
user.close("user.txt");
user("users.txt");
0 голосов
/ 22 мая 2018

Передайте имя файла конструктору ofstream.Также укажите, что вы хотите добавить в файл - нет необходимости искать вручную.

ofstream user("users.txt", ofstream::app);
if (user)
{
    user << username << endl;
    user << password << endl;
    user << bio << endl;
}
else
{
    cout << "Something went wrong with opening the file!";
}
...