Le C++ et son string
Publication : le 10 juil. 2016
Fonctions utiles pour l'utilisation de string en C++. Rien de nouveau en soit. Juste un regroupement.
Voici tous les headers nécessaires aux exemples ci-dessous:
#include <iostream>
#include <fstream>
#include <algorithm>
#include <string>
#include <stdexcept>
Remplacer
Voici différentes méthodes permettant de remplacer des chaines de caractères par d'autres.
Supprimer les espaces
Comment fait-on pour remplacer tous les espaces contenus dans un string ? Une boucle for ? Non, il y a beaucoup plus simple :
std::string theString = "This is a string";
std::string::iterator end_pos = std::remove(theString .begin(), theString .end(), ' ');
theString .erase(end_pos, theString .end());
// theString = "Thisisastring"
Parsage
Il existe beaucoup de méthodes différentes pour parser un string en un type et un type en string. En voici quelques-unes.
String -> Int
Ici, nous cherchons à convertir un string contenant un nombre en Int.
std::string theString = "123";
try {
int myInt = std::stoi(theString);
}
catch (std::invalid_argument& e){
// not a number
}
catch (std::out_of_range& e){
// out of range (too big to be an Int)
}
catch (...)
{
// Anything else
}
Nombre -> String
Qui n'a pas farfouillé dans le forum pour trouver comment concaténer un nombre dans un String ? Certains posts parlent de sstream. Mais quelle lourdeur par rapport à ce que Java propose (remplacer Java par le langage que vous voulez).
En fait, c'est tout simple mais cela ne s'invente pas.
std::string s1 = "Il fait ";
float degree = 30.5f;
std::string s2 = "C aujourd'hui.";
std::string sentence = s1 + std::to_string(degree) + s2;
std::cout << sentence << std::endl;
Ce qui affichera en console le résultat suivant:
Il fait 30.5C aujourd'hui.