istringstream en c ++
-
26-09-2019 - |
Pregunta
Estoy seguro de que solo estoy haciendo algo estúpido aquí, pero no puedo entender qué es. Cuando intento ejecutar este código:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main(int argc, char *argv[])
{
string s("hello");
istringstream input(s, istringstream::in);
string s2;
input >> s2;
cout << s;
}
Entiendo este error:
malloc: *** error for object 0x100016200: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Lo único que puedo pensar es que asigné S2 en la pila, pero pensé que las cadenas manejan su propio contenido en el montón. Cualquier ayuda aquí sería apreciada.
Gracias,
hélice
Editar: Se corrigió la última línea de Main, donde cout << s
Debería haber sido cout << s2
. Se ejecuta sin error si inicialicé S2 a "HI", pero no de otra manera. ¿Es solo un extraño problema de compilación de GCC?
Solución
Funciona para mi.
Pero nunca he hecho esto:
istringstream input(s, istringstream::in);
Probar
istringstream input(s);
Otros consejos
Entonces la respuesta resultó ser un error en Xcode. Aquí es un problema similar y su solución.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow