Le Fractionnement Du C++ Chaînes De Caractères Sur Plusieurs Lignes (Syntaxe Du Code, Pas D'Analyse)

À ne pas confondre avec comment scinder une chaîne d'analyse sage, par exemple:

Découper une chaîne en C++?

Je suis un peu confus quant à la façon de découper une chaîne sur plusieurs lignes en c++.

Cela ressemble à une simple question, mais prenons l'exemple suivant:

#include <iostream>
#include <string>
main() {
  //Gives error
  std::string my_val ="Hello world, this is an overly long string to have" +
    " on just one line";
  std::cout << "My Val is : " << my_val << std::endl;

  //Gives error
  std::string my_val ="Hello world, this is an overly long string to have" &
    " on just one line";  
  std::cout << "My Val is : " << my_val << std::endl;
}

Je me rends compte que je pouvais utiliser le std::string append() méthode, mais je me demandais si il y avait un plus court/plus élégant (par exemple, plus pythonlike, bien évidemment, entre guillemets triples etc. ne sont pas pris en charge en c++) de manière à briser les chaînes de caractères en c++ sur plusieurs lignes pour des raisons de lisibilité.

Un lieu où il serait particulièrement souhaitable, c'est quand vous êtes de passage à long littéraux de chaîne à une fonction (par exemple une phrase).

  • Voici une information intéressante: Le C++ lexer n'est pas réellement soucieux de la façon dont de nombreuses citations vous place avant et après une chaîne de caractères à deux exceptions près. Le nombre de devis que vous utilisez doit être impair et ils doivent être identiques sur chaque côté. """"" This is a valid string and will be parsed """"". Cependant, il n'existe pas de propriétés particulières donné à ces chaînes, ils ont simplement de se comporter comme des guillemets simples.
  • Intéressant merci pour le partage que... est-il utile pour qui? Vous pourriez être en mesure de l'utiliser comme un subtil balise pour les différents groupes de chaînes dans un code externe pour l'analyse en perl/bash/python scripts. C'est tout ce que je peux penser pour le moment. 🙂
  • Qui se produit simplement parce qu'il va traiter les guillemets autour de la fin comme un bouquet de chaînes vides et de les enchaîner ensemble - ce n'est pas une fonction, c'est C/C++ standard de comportement