fscanf c++ scanf c++-standard-library

c++ - fscanf - ¿Qué debo usar en lugar de sscanf?



scanf c int (5)

Tengo un problema que sscanf resuelve (extraer cosas de una cadena). No me gusta sscanf, ya que no es de tipo seguro y es viejo y horrible. Quiero ser inteligente y usar algunas partes más modernas de la biblioteca estándar de C ++. ¿Qué debo usar en su lugar?


Para la mayoría de los trabajos, los flujos estándar hacen el trabajo perfectamente,

std::string data = "AraK 22 4.0"; std::stringstream convertor(data); std::string name; int age; double gpa; convertor >> name >> age >> gpa; if(convertor.fail() == true) { // if the data string is not well-formatted do what ever you want here }

Si necesita herramientas más poderosas para un análisis más complejo, entonces podría considerar Regex o incluso Spirit from Boost.


Si incluye sstream , tendrá acceso a las clases de cadena de cadena que proporcionan secuencias para cadenas, que es lo que necesita. Roguewave tiene algunos buenos ejemplos de cómo usarlo.



fgets o strtol


Intente std::stringstream :

#include <sstream> ... std::stringstream s("123 456 789"); int a, b, c; s >> a >> b >> c;