2017-06-29 1 views
-4

désolé pour mon mauvais anglaisComment insérer * char dans le vecteur <string> "[i]"? [C++]

j'ai char *c et je dois insérer dans "i" position dans un vector <string>

Quelqu'un peut-il aider?

+0

La réponse varie grandement pour savoir si le vecteur a plus, égale ou moins de 'éléments î' avant l'insertion. Laquelle est-ce? – Curious

+0

Avez-vous essayé de regarder [documentation] (http://fr.cppreference.com/w/cpp/container/vector)? – crashmstr

+0

@Curious égal ou inférieur est le même cas – Slava

Répondre

3

char * peut être (implicitement) converti en std::string, puis insérez-le dans la bonne position:

vec.insert(vec.begin() + i, std::string(c)); 

Bien sûr, vous devez être sûr que vec taille est plus grande ou égale à i. Détails peuvent être trouvés dans documentation

1

Pour insérer quelque chose dans un vecteur, vous devez utiliser l'une de ses méthodes insert. Par exemple

#include <iostream> 
#include <vector> 
#include <string> 
#include <iterator> 

int main() 
{ 
    std::vector<std::string> v = { "Christian", "Assis" }; 
    const char *s = "Hello"; 
    size_t i = 0; 

    v.insert(std::next(v.begin(), i), s); 

    for (const auto &s : v) std::cout << s << ' '; 
    std::cout << std::endl; 

    return 0; 
} 

La sortie du programme est

Hello Christian Assis 

Vous pouvez ajouter un contrôle si la valeur de la position i est inférieur ou égal au nombre d'éléments dans le vecteur.

Par exemple

v.insert(std::next(v.begin(), v.size() < i ? v.size() : i), s); 
+0

Merci Slava et Vlad !! :) Désolé pour la question, je juste la programmation en C et j'ai eu besoin d'insérer des variables de C++. J'ai compris vos jurons, ils ont travaillé! –