2017-02-08 1 views
-1

Il ne montre aucune erreur, mais pour une raison quelconque, mon cout ne se présentera pas. Est-ce que je manque quelque chose? J'essaie de convertir une série de nombres en un format de numéro de téléphone typique.Conversion "12345678" en "1-234-5678", mon code ne produit rien

int numberCount = 0; 
string phoneNumberUnform = "12345678"; 
for (size_t i = 0; i < phoneNumberUnform.length(); i++) 
{ 
    numberCount++; 
} 
if (numberCount = 8) 
{ 
    string phoneNumber[10]; 
    phoneNumber[0] = phoneNumberUnform[0]; 
    phoneNumber[1] = "-"; 
    for (int i = 2; i = 5; i++) 
    { 
     phoneNumber[i] = phoneNumberUnform[i-1]; 
    } 
    phoneNumber[6] = "-"; 
    for (int i = 7; i = 10; i++) 
    { 
     phoneNumber[i] = phoneNumberUnform[i-1]; 
    } 
    cout << phoneNumberUnform; 
    cout << phoneNumber; 
    return 0; 
} 
+1

'pour (int i = 2; i = 5; i ++)' et 'for (int i = 7; i = 10; i ++)' sont des boucles infinies. 'i = 5' (et' i = 10') sont des affectations, voulez-vous comparer les valeurs? De plus, votre initiale 'if' (' numberCount = 8') a une affectation au lieu de comparaison. –

+3

Votre boucle initiale n'est pas pertinente. Vous obtiendrez le même résultat en utilisant 'numberCount = phoneNumberUnform.length()'. –

+1

@NikolajDamLarsen Il y a tellement de ** non ** dans le code, qu'il n'y a aucun intérêt à essayer de le réparer. Quand j'ai commencé à écrire mon premier commentaire, j'ai remarqué une seule chose. Plusieurs modifications plus tard, j'ai abandonné .. –

Répondre

7

Utilisez la fonction membre de std :: string insert:

#include <iostream> 
#include <string> 

int main() { 
    std::string s = "123456789"; 
    s.insert(1, "-"); 
    s.insert(5, "-"); 
    std::cout << s; 
    return 0; 
} 

Pour l'approche manuelle, redimensionner la chaîne d'origine pour accueillir les deux personnages supplémentaires:

std::string s = "123456789"; 
std::string temp = s; 
int strlen = temp.length(); 
s.resize(s.length() + 2); 

s[1] = '-'; 

for (int i = 2; i < 5; i++) 
{ 
    s[i] = temp[i - 1]; 
} 
s[5] = '-'; 
for (int i = 6; i < strlen + 2; i++) 
{ 
    s[i] = temp[i - 2]; 
} 

Dans la seconde boucle utiliser l'index temp[i - 2] au lieu de l'temp[i - 1] parce que d'ici là, nous avons déjà inséré les deux - charac ters dans notre chaîne d'origine.