RSS link icon

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.