#include<iostream>
#include<string>
using namespace std;
string encrypt(string input)
{
string output;
int i=0;
while(input[i] != '\0')
{
if (input[i] >= 'a' && input[i] <= 'w' || input[i] >= 'A' && input[i] <= 'W')
input[i] = input[i] + 3;
if (input[i] >= 'x' && input[i] <= 'z' || input[i] >= 'X' && input[i] <= 'Z')
input[i] = input[i] - 23;
output[i] = input[i];
//cout << input[i];//오류 확인 위한 출력문
i++;
}
return output;
}
int main(void)
{
string i = ("input insert");
cout << encrypt(i) << endl;
return 0;
}
하나만 출력이 되고나서 오류메세지떠버리는데 string이용할 경우 output에 어떻게 넣나요?
sizeof(i) 찍어보니 string당 28문자까지는 가능한걸로 아는데
for문으로 해도 똑같은 오류메세지가 발생하는데 char형 다루듯이 하면 안되는건가요?
cstring 을 쓰셈
아니면 그냥 char* 를쓰던가
output 이 할당안되어서 그런거 아님?
output[i] = 대신 output += 해보셈
null 은 끌고 다닐텐데 i < input.length() 로 for 돌리는게 경제적
모짜르트님 방식으로 하니깐 됩니다.
while(input[i] != 'NULL')로 했었습니다. 그런데 INPUT.LENGTH()로 하면 도중에 있는 SPACE 공백부분을 크기 처리로 안하길래 저걸로 했었네요. 감사합니다
//while (input[i] != '\0')//i++; //output = (char*)malloc(sizeof(char)*i);
123님 방식대로 동적할당 이용해서 STRING으로 RETURN하는 식으로 하니 OUT OF RANGE는 처리가 되는데 그건 쓰레기값이 같이 출력이 되던데 이건 무슨 이유죠?
output.resize 같은걸로 미리 잡아놓고 배열 억세스 하는게 젤 싸긴 하겠다
그건 마지막에 널 문자를 안넣은 구조라 그렇겠지
input.length 썼을때도 널 문자가 안들어간거임
공백 같은거 다 포함됨
C 기본 문자열 처리에 개념이 없으신듯
164260//붙혀->붙여 (기본형이 붙히다가 아니고 붙이다임) [리듬 맞춤법 봇♬]
감사합니다. 문자열 처리 부분을 잘 몰라서 물어보게 되었어요 length가 공백부분 다 들어가네요 감사합니다.
123//던->든 (선택은 든 과거 회상은 던) [리듬 맞춤법 봇♬]
164260//던->든 (선택은 든 과거 회상은 던) [리듬 맞춤법 봇♬]