От int до char * без строк и неудобно с fstream - PullRequest
0 голосов
/ 26 марта 2012

Мне нужна помощь в выполнении «домашнего задания». Я не могу получить этот код, потому что я не могу конвертировать из int в * char. Большая проблема в том, что я не могу использовать строки. Это код:

//This is in a class

void Interfaz::guardarFCS() {
    char *nombreArchivo = vent.pedirTxt("por favor inserte un nombre para el archivo");
    exportar.setFileName(nombreArchivo,2);
    int ancho = elMapa.getterAncho();
    int alto = elMapa.getterAlto();
    int estadoCasilla;
    int l;
    int k;
    for( l = 0; l<ancho; l++) {
        for( k = 0; k<alto; k++) {
            estadoCasilla = elMapa.casillaMapaInt(l,k);
            if(estadoCasilla==1) {
                exportar.escribir("[");
                exportar.escribir(l);
                exportar.escribir("],[");
                exportar.escribir(k);
                exportar.escribir("]\n");
            }
        }
    }
}

где escribir - это просто офстрим с <<whatIsSend. здесь я не могу создать переменную ofstream

#ifndef Exportador_H
#define Exportador_H

class Exportador {

    //variables
    char fileName[255];
    std::ofstream archivoIn;
public:

    Exportador();
    void setFileName(char*,int);
    void cargar(char*);
    void crear();
    void escribir(char*);
    void guardarFcs(Mapa);
    ~Exportador();

};
#endif

единственный способ заставить его работать - создать новую переменную для каждого метода, поскольку проблема заключается в использовании объявления класса для не-члена в области видимости класса, если я не использую std ::, другая ошибка arraise с именем ofstream не называет тип. в любом случае, по крайней мере, для чтения моего кода. Любые предложения приветствуются

1 Ответ

2 голосов
/ 26 марта 2012

Я не полностью понимаю, что вы спрашиваете, но это должно сработать:

void Exportador::escribir(int i)
{
     char convertedToText[10] = {0};
     // convert to text, this is the exericse 
     //   (use 
     //       - while loop, 
     //       - i=i/10 and 
     //       - i%10)
     // don't forget to null-terminate

     archivoIn << convertedToText;
}

Я не показываю вам фактическое преобразование (подсказка: itoa может быть тем, что вы хотите, если выразрешено использовать его), так как это исключило бы упражнение из домашней работы

...