2017-02-08 11 views
-1

오류가 보이지 않지만 어떤 이유에서든 내 cout이 나타나지 않습니다. 내가 놓친 게 있니? 일련의 숫자를 일반적인 전화 번호 형식으로 변환하려고합니다."12345678"을 "1-234-5678"로 변환하면 코드에서 아무 것도 출력하지 않습니다.

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

for (int i = 2; i = 5; i ++) 및 for (int i = 7; i = 10; i ++)는 무한 루프입니다. 'i = 5' (그리고'i = 10')는 과제이고, 값을 비교하고 싶습니까? 또한, 초기의'if' ('numberCount = 8')에는 비교 대신에 할당이 있습니다. –

+3

초기 루프는 부적합합니다. 'numberCount = phoneNumberUnform.length()'를 사용하면 같은 결과를 얻는다. –

+1

@NikolajDamLarsen 코드에는 ** ** 없음 **이 있으므로 해결해야 할 점이 없습니다. 처음 의견을 쓰기 시작했을 때, 나는 한 가지만 알아 챘다. 나중에 몇 가지 편집, 나는 포기했다. –

답변

7

성병 : : 문자열의 insert 멤버 함수를 사용하여 두 번째에서

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]; 
} 

: 추가로 두 개의 문자를 수용하기 위해 원래의 문자열을 수동 방식의 경우

#include <iostream> 
#include <string> 

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

의 크기를 조정 루프는 temp[i - 1] 대신에 temp[i - 2] 색인을 사용합니다. 그때까지 이미 두 개의 문자를 삽입했기 때문입니다. - charac 우리의 원래 문자열에 ters.