Hola, os comento estoy haciendo una extraccion de una cadena de un fichero y estoy usando getline
y quiero extraer caracteres hasta encontrar el ~, pero no me funciona con la @ tampoco y quisiera saber a que se debe, he probado los siguientes métodos.
file.getline(x,x,'~');
file.getline(x,x,(char)0xE7);
file.getline(x,x,(char)126);
Saludos!
EDITO He estado probado otros caracteres que no sean letras, cosas como € + { etc, y tampoco me funciona a que se debe?
Xafi ¿estás abriendo el archivo bien? Ten cuidado porque en codeblocks si estás ejecutando directamente desde la interfaz, busca el archivo en la raiz de la carpeta del proyecto, no en "Debug" ni en "Release".Comprueba si se está abriendo el archivo.A mí con este código:
#include <iostream>
#include <fstream>
using namespace std;
int main ( int argc , char *argv[])
{
ifstream file;
file.open("test",ifstream::in );
char extraction [100];
file.getline(extraction,40,'~');
cout << extraction;
file.close();
return 0;
}
Y siendo el contenido de test:
12345~aeiou
La salida es:
12345
Bueno ya lo he solucionado era error mio... al tener 2 carpetas una compartida y una privada no modifique el archivos de texto que tenía que modificar, Siento las molestias XDD saludos y gracias avesudra.
Se me ha ocurrido lo siguiente para cuando el texto lo cargas desde un fichero, y quieres incluir "\n" en el fichero en los puntos que deseas, para que a la hora de cargar lo trate como salto de linea, tan solo hay que hacer lo siguiente.
for(int i=0;i<texto.length();i++){
if(texto[i]=='\\' && texto[i+1]=='n'){
texto.replace(i,2,"\n");
}
}
igual que \n puede ser cualquier otro caracter, solo hay que modificar el codigo, ejemplo:
if(texto[i]=='~'){
texto.replace(i,1,"\n");
}