강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

dkujuwe님의 프로필 이미지
dkujuwe

작성한 질문수

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

7. 영어 단어 복구(문자열 컨트롤)

string 질문입니다!

해결된 질문

작성

·

216

0

안녕하세요. 이렇게하면 b가 출력이 안되는데 이유를모르겠습니다.. string 으로 하고싶으면 어떻게 바꿔야하나요?

#include <iostream>

#include <string>

using namespace std;

 

int main() {

    

    string a, b;

    getline(cin, a);

    int p =0;

    for(int i=0; i<a.size(); i++){

        if(a[i] != ' '){

            if(a[i] >= 65 && a[i] <= 90){

                b[p++] = a[i]+32;

             

            }else{

                b[p++] = a[i];

           

            }

        }

    }

    b[p] ='\0';

    cout<<b<<'\n';

     

    return 0;

}

답변 2

2

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

스트링은 마지막 널문자를 인식해서 출력하는 방식이 아닙니다. 널문자를 인식하고 출력하는 것은 char 배열입니다.

아래 코드처럼 하시면 됩니다.

#include <bits/stdc++.h>
using namespace std;

 

int main() {

    char ch[100];
    string a, b;

    getline(cin, a);

    int p =0;

    for(int i=0; i<a.size(); i++){

        if(a[i] != ' '){

            if(a[i] >= 65 && a[i] <= 90){

                b[p++] = a[i]+32;

             

            }else{

                b[p++] = a[i];

           

            }

        }

    }

    b[p] ='\0';
    strcpy(ch, b.c_str());  //스트링을 char로 변환해야 널을 마지막 종료로 인식하고 출력합니다.

    cout<<ch<<'\n';

     

    return 0;

}

0

dkujuwe님의 프로필 이미지
dkujuwe
질문자

감사합니다.

dkujuwe님의 프로필 이미지
dkujuwe

작성한 질문수

질문하기