OVH Cloud OVH Cloud

prendre caractere

6 réponses
Avatar
giovanni
ligne dans fichier text.txt
12345 89 45 67
voila comment prendre le chiffre 89 et le mettre dans uen variable 45 etc ?
avec prog dessous
super debutant!
#include <string>
#include <iostream>
#include <fstream>
using namespace std;

int main(int argc, char* argv[])
{
cout << "Veuillez entrer un nom de fichier (sans espace) :\n";
string strFileName;
cin >> strFileName;
ifstream file;
file.open(strFileName.c_str());
if (file.is_open())
{
string ligne;

while (getline(file, ligne))
cout << ligne << endl;

{
string strLine;
getline(file, strLine);
cout << strLine << endl;
}
}
else
cout << "Impossible d'ouvrir le fichier\n";
return 0;
}

6 réponses

Avatar
Loïc Joly
giovanni wrote:

ligne dans fichier text.txt
12345 89 45 67
voila comment prendre le chiffre 89 et le mettre dans uen variable 45 etc ?
avec prog dessous
super debutant!


Je ne suis pas certain de bien comprendre ta question, mais à tout
hasard, regarde du côté de <sstream>.

--
Loïc

Avatar
giovanni
au fait je penceun programme qui prend caractere par exemple le 89 et le
compare et ensuite caractere suivant 45 etc
comparer entre 2 prog voir les difference au fait
"Loïc Joly" a écrit dans le message de news:
41d6e3c6$0$17846$
giovanni wrote:

ligne dans fichier text.txt
12345 89 45 67
voila comment prendre le chiffre 89 et le mettre dans uen variable 45
etc ?


avec prog dessous
super debutant!


Je ne suis pas certain de bien comprendre ta question, mais à tout
hasard, regarde du côté de <sstream>.

--
Loïc



Avatar
drkm
Loïc Joly writes:

giovanni wrote:

ligne dans fichier text.txt
12345 89 45 67
voila comment prendre le chiffre 89 et le mettre dans uen variable 45 etc ?
avec prog dessous
super debutant!


Je ne suis pas certain de bien comprendre ta question,


Moi non plus.

mais à tout
hasard, regarde du côté de <sstream>.


Auquel cas, ceci devrait l'intéresser. Il assume que l'entrée est
une suite de ligne de quatre nombres, séparés par des caractères
blancs. Je suis en fait curieux de voir les commentaires sur ce code.
J'ai toujours l'impression d'oublier des cas particuliers en jouant
avec les flux.

#include <iostream>
#include <istream>
#include <ostream>
#include <sstream>
#include <string>

void display( int line_num , int v1 , int v2 , int v3 , int v4 ) {
std::cout
<< "# " << line_num << ":t"
<< "v1: " << v1
<< ", v2: " << v2
<< ", v3: " << v3
<< ", v4: " << v4
<< std::endl ;
}

void format_error( int line_num ) {
std::cerr << "Error at line " << line_num << "!n" ;
}

bool is_space( std::string const & s ) {
for ( std::string::const_iterator it = s.begin() ,
end = s.end() ;
it != end ;
++ it ) {
char c = * it ;
if ( ! std::isspace( c ) ) {
return false ;
}
}
return true ;
}

bool is_space( std::istringstream & iss ) {
for ( char c = iss.get() ; iss ; c = iss.get() ) {
if ( ! std::isspace( c ) ) {
return false ;
}
}
return true ;
}

int main() {
for ( int line_num = 1 ; std::cin ; ++ line_num ) {
std::string line ;
std::getline( std::cin , line ) ;

if ( is_space( line ) ) {
std::cout << "# " << line_num << ":tempty" << std::endl ;
continue ;
}

int v1 = 0 , v2 = 0 , v3 = 0 , v4 = 0 ;
std::istringstream iss( line ) ;
iss >> v1 >> v2 >> v3 >> v4 ;

if ( iss && is_space( iss ) ) {
display( line_num , v1 , v2 , v3 , v4 ) ;
}
else {
format_error( line_num ) ;
break ;
}
}
}

--drkm


Avatar
drkm
"giovanni" writes:

au fait je penceun programme qui prend caractere par exemple le 89 et le
compare et ensuite caractere suivant 45 etc
comparer entre 2 prog voir les difference au fait


Je comprends encore moins ...

PS: Peux-tu poster *après* le message cité, stp ?

--drkm

Avatar
giovanni
donc je vais essayer de resumer:
un fichier contient serie de chiffre :
12345 89 45 67 55 22
12345 56 77 34 77 35

un deuxieme fichier contient :
12345 90 89 45 55 44
23344 45 66 76 88 98

voila je veu comparer ces deux fichier mais le debut ne me interesse (12345)
pas ,donc le 89 et le 55 premiere ligne du premier fichier sont dans la
premiere ligne du deuxieme fichier donc me ecris 1= 2 dans variable
ensuite toujours la premiere ligne du premier fichier et comparer a la
deuxieme ligne fu deuxieme fichier et noter dans variable si il y a
similitude de chiffre et ainsi de suite....

au fait je cherche le prog pour verifier fichier 1 et fichier 2 et noter
dans variable difference exmple la premiere ligne
"drkm" a écrit dans le message de news:

Loïc Joly writes:

giovanni wrote:

ligne dans fichier text.txt
12345 89 45 67
voila comment prendre le chiffre 89 et le mettre dans uen variable 45
etc ?



avec prog dessous
super debutant!


Je ne suis pas certain de bien comprendre ta question,


Moi non plus.

mais à tout
hasard, regarde du côté de <sstream>.


Auquel cas, ceci devrait l'intéresser. Il assume que l'entrée est
une suite de ligne de quatre nombres, séparés par des caractères
blancs. Je suis en fait curieux de voir les commentaires sur ce code.
J'ai toujours l'impression d'oublier des cas particuliers en jouant
avec les flux.

#include <iostream>
#include <istream>
#include <ostream>
#include <sstream>
#include <string>

void display( int line_num , int v1 , int v2 , int v3 , int v4 ) {
std::cout
<< "# " << line_num << ":t"
<< "v1: " << v1
<< ", v2: " << v2
<< ", v3: " << v3
<< ", v4: " << v4
<< std::endl ;
}

void format_error( int line_num ) {
std::cerr << "Error at line " << line_num << "!n" ;
}

bool is_space( std::string const & s ) {
for ( std::string::const_iterator it = s.begin() ,
end = s.end() ;
it != end ;
++ it ) {
char c = * it ;
if ( ! std::isspace( c ) ) {
return false ;
}
}
return true ;
}

bool is_space( std::istringstream & iss ) {
for ( char c = iss.get() ; iss ; c = iss.get() ) {
if ( ! std::isspace( c ) ) {
return false ;
}
}
return true ;
}

int main() {
for ( int line_num = 1 ; std::cin ; ++ line_num ) {
std::string line ;
std::getline( std::cin , line ) ;

if ( is_space( line ) ) {
std::cout << "# " << line_num << ":tempty" << std::endl ;
continue ;
}

int v1 = 0 , v2 = 0 , v3 = 0 , v4 = 0 ;
std::istringstream iss( line ) ;
iss >> v1 >> v2 >> v3 >> v4 ;

if ( iss && is_space( iss ) ) {
display( line_num , v1 , v2 , v3 , v4 ) ;
}
else {
format_error( line_num ) ;
break ;
}
}
}

--drkm




Avatar
drkm
writes:

drkm wrote:

Je suis en fait curieux de voir les
commentaires sur ce code.


Surtout, c'est beaucoup trop compliqué. Tu ne profites pas de
toutes les possibilités des istream.


Ok. Merci pour ces explications. Je n'en attendais pas moins de
toi ;-). J'espère vivement enfin trouver le temps de lire le bouquin
de Langer et Kreft.

--drkm