Из int в char* без строк и неудобно с fstream

Мне нужна помощь в "домашнем задании". Я не могу заставить работать этот код, потому что не могу преобразовать из 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:: другая ошибка вызовет вызов ' ofstream' не называет тип. в любом случае, по крайней мере, для чтения моего кода. Любые предложения приветствуются


person user1292098    schedule 26.03.2012    source источник
comment
очень немногие люди в StackOverflow теперь понимают, что означают cargar или guardarFcs. Я действительно думаю, что archivoIn, возможно, следовало бы назвать archivoOut? Другими словами: имена имеют значение, и, пожалуйста, разместите английский код на SO.   -  person sehe    schedule 26.03.2012
comment
Я не очень понимаю ваш вопрос. Вам просто нужна функция для преобразования int в char * без использования строк или ostreams? Или есть что-то еще, что мне не хватает? Почему новая переменная для каждого метода? Это часть, которая, на мой взгляд, не имеет смысла. Также вы говорите, что escribir — это просто ostream, но вы используете его как метод, так что этого не может быть. Попробуйте отредактировать свой ответ для большей ясности, возможно, тогда я смогу помочь.   -  person LiKao    schedule 26.03.2012
comment
Ваш вопрос сбивает с толку, я не понимаю, в чем проблема. Может помочь, если вы отредактируете вопрос, чтобы он был понятен. Изменение испанских имен на английские для кода было бы плюсом, так как людям, не говорящим по-испански, будет легче понять ваш код.   -  person Antonio Pérez    schedule 26.03.2012


Ответы (1)


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

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 может быть тем, что вам нужно, если вам разрешено его использовать), так как это уберет упражнение из домашнего задания.

person sehe    schedule 26.03.2012
comment
archivoIn << i отлично работает, если archiveIn равно ofstream. - person jfs; 26.03.2012
comment
@ J.F.Sebastian: я думал, что преобразование - это домашнее задание. согласен, не понятно. В любом случае... - person sehe; 26.03.2012