【问题标题】:From int to char* without strings, and a inconvenient with fstream从 int 到 char* 不带字符串,不方便使用 fstream
【发布时间】:2012-03-26 06:19:03
【问题描述】:

我在“家庭作业”方面需要帮助。我无法使用此代码,因为我无法从 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 只是 &lt;&lt;whatIsSend 的一个 ofstream。 在这里我无法创建 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”的arraise 没有命名类型。 无论哪种方式至少可以阅读我的代码。欢迎任何建议

【问题讨论】:

  • 现在 StackOverflow 上很少有人会理解 cargarguardarFcs 的意思。我确实认为archivoIn 可能应该被命名为archivoOut?换句话说:命名很重要,请在SO上发布英文代码
  • 我不太明白你的问题。您是否只需要一个函数将 int 转换为 char * 而不使用字符串或 ostreams?或者还有什么我想念的吗?为什么每种方法都有新变量?这是我认为没有意义的部分。您还说escribir 只是一个ostream,但您将它当作一种方法使用,所以它不能。尝试编辑您的答案以获得更清晰的信息,也许我可以提供帮助。
  • 您的问题令人困惑,我不明白实际问题是什么。如果您编辑问题以便明确说明,可能会有所帮助。将代码的西班牙语名称更改为英文将是一个加分项,因为非西班牙语使用者会更容易理解您的代码。

标签: c++ char int ofstream


【解决方案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 可能是你想要的,如果你被允许使用它),因为这会从作业中删除练习

【讨论】:

  • 如果archiveInofstreamarchivoIn &lt;&lt; i 工作得很好。
  • @J.F.Sebastian:我认为转换是功课。我同意这不清楚。总之……
猜你喜欢
  • 2012-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-01
  • 2015-03-11
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多