J'ai reçu une erreur Segmentation dans le programme suivant.
Pourquoi cela se produit-il et comment puis-je le réparer?Erreur de segmentation dans le programme qui crée un vecteur à partir d'une chaîne
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
std::vector<std::string> split_words(std::string s) {
std::vector<std::string> v(1, "");
int i=0;
int wortanzahl = 0;
while(i<s.size()) {
if (s[i]!=' ') {
v.resize(wortanzahl + 1, "");
for (int j=i; s[j]!=' '; ++j) {
v[wortanzahl] += s[j];
i=j;
}
++wortanzahl;
}
++i;
}
}
int main() {
std::string s = "Alpha beta! Gamma";
split_words(s);
return 0;
}
Utilisez 'std :: istringstream' pour diviser les mots sur un espace. Vous n'avez pas besoin d'écrire ces types de boucles pour faire ce travail. – PaulMcKenzie
Assurez-vous que vous disposez d'une version de débogage et exécutez le programme sous votre débogueur. Lorsque l'erreur de segmentation se produit, elle vous indique la ligne où elle s'est produite et l'état du programme. Ou, vous pouvez examiner un fichier core existant. Post-scriptum, rien ne s'arrête de j courant à la fin ... – Useless