|
|
|
|
Bonjour,
Y-a-t-il un équivalent c++ de la fonction scanf ?
Le but est de récupérer des nombres dans un string formaté, pour l'instant j'utilise :
scanf(txt.c_str(), "truc %ld bidule %ld machin", &m, &n);
Configuration: Windows Vista Firefox 2.0.0.13
Scanf étant une fonction native du C, elle se retrouve en C++
|
En C++ on utilise plutôt le flux "cin".
|
Heu...
#include <iostream>
using namespace std;
int main()
{
/*tout plein de code*/
string txt = "truc 12 bidule 321 machin";
...
mon but c'est de récupérer 12 et 321, pour l'instant j'utilise : double m; double n; scanf(txt.c_str(), "truc %ld bidule %ld machin", &m, &n); En fait j'espérais qu'une fonction existait pour manipuler directement le string (et sans merder, parce que scanf à des défauts qui sont un peu chiant dans le programme). Soyons fou, je voudrais un truc du genre (enfin... à peut près hein !! là j'invente pour dire d'illustrer !! ^^) :
txt.nom_de-la_fonction("truc ", &m, " bidule ", &n, "machin");
heu... oué, j'suis pas sûr de moi là, on va en faire un autre (juste pour le fun !! ^^) : txt >> "truc " >> m >> " didule " >> n >> " machin"; //ça serait vraiment simple là, mais on peut toujours rêver...
|
Personnellement je préfère scanf mais bon...
#include <conio.h>
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
int main( int argc, char *argv[])
{
std::string dummy;
long double ldValue1;
long double ldValue2;
std::stringstream ss;
std::ifstream file( "test.txt" );
if ( file.is_open() )
{
ss << file.rdbuf(); // <- /!\ ici ça bourrine /!\
while ( ss >> dummy >> ldValue1 >> dummy >> ldValue2 >> dummy )
std::cout << "Value1 = " << ldValue1 << "\t"
<< "Value2 = " << ldValue2 << std::endl;
file.close();
}
getch();
return 0;
}
Ce serait plus propre de le faire avec des ::std::getline à moins que le fichier ne soit pas trop gros. M. |