Estoy tratando de leer texto en un archivo y almacenarlo en una cadena para que se pueda generar y leer

Aunque cuando trato de ver la cadena de salida, parece tener una salida completamente diferente. ¿Alguien sabe por qué y qué puedo hacer para solucionarlo?

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <string>
#pragma warning(disable:4996)
using namespace std;

int main()
{
    char str=' ';
    string myString = "";
    
    FILE* filepointer = fopen("C:/Users/user/Desktop/textfile.txt", "r");
    if (filepointer == NULL) {
        printf("Can't open file\n");
    }
    else {

        while (!feof(filepointer)) {
            str=fgetc(filepointer);
            printf("%c",str);
           
            myString = myString + str;
         

        }
        fclose(filepointer);
        printf("\n\rmyString = %s ", myString);
    }
}

Para que quede claro, el contenido del archivo no es el té prueba prueba prueba prueba

Este es el salida de código

1
George Sayles 3 mar. 2021 a las 17:59

1 respuesta

La mejor respuesta

Está intentando printf un std::string.

Esto no funciona porque, dado que printf es una función de c, no conoce las cadenas de c ++.

Puede usar std::cout << myString << std::endl O usar la función miembro c_str() de myString para convertirlo en una cadena de estilo c.

printf("\n\rmyString = %s ", myString.c_str());

Si bien el compilador lo acepta bien, generalmente son cosas como esta las que hacen que la gente le diga que no mezcle cy c ++.

0
David van rijn 3 mar. 2021 a las 15:12