C++ problemas al escribir en fichero

Iniciado por JonaLamper, 2 Octubre 2018, 22:38 PM

0 Miembros y 1 Visitante están viendo este tema.

JonaLamper

Muy buenas,

Tengo un problema que no sé resolver al concatenar strings y escribir en un fichero. ¿Alguien sabe por qué no me deja?

Adjunto imagen, podéis confiar en el link jajaja:

https://ibb.co/mCiAzK

Muchas gracias  ;D
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.

JonaLamper

#1
Vale, ya lo he conseguido:

Código (cpp) [Seleccionar]
void createFile(vector<vector<bool>> matriz) {
ofstream fs("prueba.txt");
string texto = "";

// Declaración de constantes
for (int i = 0; i < matriz.size(); i++) {
for (int j = 0; j < matriz.size(); j++)
texto = texto + "(declare-const " + "p_" + (char)i + "_" + (char)j + " Bool) \n";
texto = texto + "\n";
}
fs << texto;
fs.close();
}


Aunque ahora tengo otro problema: ¿Por qué cuando fuerzo que 'i' y 'j' sean de tipo char no me escribe nada en el fichero? Me debería escribir lo que vale 'i' y 'j' (el número en sí), pero no escribe nada. Este es el resultado en el fichero:

Código (bash) [Seleccionar]
(declare-const p__ Bool)
(declare-const p__ Bool)
(declare-const p__ Bool)
(declare-const p__ Bool)
(declare-const p__ Bool)


Y debería ser este el resultado:

Código (bash) [Seleccionar]
(declare-const p_1_1 Bool)
(declare-const p_1_2 Bool)
(declare-const p_1_3 Bool)
(declare-const p_1_4 Bool)
(declare-const p_1_5 Bool)


Es más, no sé por qué este código tan tonto no me muestra el número:

Código (cpp) [Seleccionar]
int a = 32;
char c = (char)a;
cout << "number: " << c << endl;


¿Está mal hecha la conversión?  :-\
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.

JonaLamper

Perfecto, ya lo he conseguido. Me he declarado una función para convertir int a string:

Código (cpp) [Seleccionar]
string toString(int x){
stringstream str;
str << x;
return str.str();
}


De tal forma que simplemente llamo a la función cuando quiero añadir algo al texto que ya tengo:

Código (cpp) [Seleccionar]
for (int i = 0; i < matriz.size(); i++) {
for (int j = 0; j < matriz.size(); j++)
texto = texto + "(declare-const " + "p_" + toString(i) + "_" + toString(j) + " Bool) \n";
texto = texto + "\n";
}
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.