ifstream我不能同时写c ++读取

时间:2015-10-25 20:41:54

标签: c++ ifstream

如果我使用switch语句,那么读取部分就会起作用 在这个代码我相同的“codigo”不能使用两次 所以我用的是月经 反馈
“esse codigo ja existe”

请帮我找到这段代码的错误

标题1

#pragma once
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

class Paciente
{
private:
    int  codigo, fixo, celular;
    string nomePaciente, nomeCovenio;
public:



    void setCodigo(int x) {
        codigo = x;
    }
    int getCodigo() {
        return codigo;
    }
    void setFixo(int x) {
        fixo = x;
    }
    void setCelular(int x) {
        celular = x;
    }
    void setNomePaciente(string x) {
        nomePaciente = x;
    }
    void setNomeCovenio(string x) {
        nomeCovenio = x;
    }
    int getFixo() {
        return fixo;
    }
    int getCelular() {
        return celular;
    }
    string getNomeCovenio() {
        return nomeCovenio;
    }
    string getNomePaciente() {
        return nomePaciente;
    }
};

<i>#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string>
#include <fstream>
#include "Paciente.cpp"

using namespace std;
int main() {
    fstream texto1("paciente.txt", ios::in  |ios::out| ios::app);

    int s;
    Paciente p;
    string q,z,r;
    cout << "1-Cadastramento" << endl << "2-Agendamento" << endl << "3-Alteracao de Paciente" << endl << "4-Vizualizacao de Consultas" << endl;
    cin >> s;
    switch (s) {
    case 1:
        int w;
        cout << "diga seu codigo" << endl;
        cin >> s;
        p.setCodigo(s);
        cout << "diga seu nome" << endl;
        cin >> q;
        p.setNomePaciente(q);
        cout << "diga seu nome do covenio" << endl;
        cin >> q;
        p.setNomeCovenio(q);
        cout << "diga o seu telefone fixo" << endl;
        cin >> w;
        p.setFixo(w);
        cout << "diga o seu telefone celular" << endl;
        cin >> w;
        p.setCelular(w);
        texto1 << endl << "Paciente " << p.getNomePaciente() << endl;
        texto1 << "Covenio " << p.getNomeCovenio() << endl;
        texto1 << "Fixo " << p.getFixo() << endl;
        texto1 << "Celular " << p.getCelular() << endl;
        texto1 << "Codigo " << p.getCodigo() << endl;
        texto1.clear();
        while (texto1 >> z >> r) {
            if (z == "Codigo") {
                int x = atoi(r.c_str());
                if (x == 12) {
                    cout << "esse codigo ja existe" << endl;
                };

            };
        };

        break;
    case 2:
        break;
    case 3:
        break;
    case 4:
        break;
    default:
        cout << "Nao eh uma opcao" << endl;
        break;
    };


    texto1.close();
    system("pause");
    return 0;

}</i>,

1 个答案:

答案 0 :(得分:0)

fstream只保留一个文件位置,在读写之间共享。

每次在读取和写入之间切换时,都必须设置为下一个操作设置位置。如果您真的想使用当前位置,可以使用

的最小搜索
texto1.seekp(0, ios_base::cur);

&#34;移动&#34;文件位置距当前位置0个字节。但它仍然是正式的寻求,然后你可以从那个位置读或写。