Quand vous dites:
rs=string(sym, 4);
Ce que vous faites est dit: « me construire un objet std::string
, et je (le programmeur) vous aider (le programme) faire en vous donnant cette tableau de caractères et un nombre. " Le code derrière la classe std::string
sait que dans ce cas, où il est donné un tableau de caractères et un nombre entier, il doit prendre le nombre de caractères indiqué par le tableau de caractères et construire un std::string
en utilisant ce contenu.
Quand vous dites:
string rs2=string(rs, 4);
Ce que vous faites maintenant est dit: « me construire un objet std::string
, et je vous aider à le faire en vous donnant ce déjà existant objet std::string
et un numéro." La classe std::string
fait quelque chose de complètement différent dans ce cas. Quand il reçoit ces deux arguments, il utilise à la place le numéro comme pour commencer lecture à partir du std::string
fourni.
Ces deux cas différents sont deux différents constructeurs pour la std::string
classe - ils fournissent deux façons différentes pour construire un objet std:string
basé sur les informations dont vous disposez. Vous pouvez facilement faire le deuxième travail par exemple comme le premier en changeant à ce formulaire:
string rs2=string(rs, 0, 4);
Maintenant, vous dites qu'il « initialize cette nouvelle std::string
(appelée rs2
) en prenant des caractères de l'autre std::string
rs
. Je veux que vous commenciez au caractère à l'index 0 (ainsi, le premier) et preniez 4 caractères après cela - s'ils existent. "
Il est important de savoir, avant de construire un objet d'une classe, comment se comportent les constructeurs. Vous pouvez trouver la documentation sur tous les constructeurs std::string
dans beaucoup d'endroits en ligne avec quelques recherches. Il est à noter que beaucoup d'autres choses se passent dans cet exemple (par exemple, l'opérateur d'affectation) et de nombreux problèmes sont passés en revue, mais étant donné la nature débutant auto-déclaré de cette question, j'ai senti il vaut mieux le garder haut niveau.
Voir la documentation du constructeur pour 'string' sur http://fr.cppreference.com/w/cpp/string/basic_string/basic_string – hmjd