대문자를 소문자로 변경하면 문자열의 길이를 줄일 수 있습니까?대문자를 소문자로 변경하면 문자열의 길이를 줄일 수 있습니까?
void lower(char *s)
{
int i;
for (i=0;i<strlen(s);i++)
if(s[i])>='A' && s[i]<='Z')
s[i]-=('A'-'a');
}
대문자를 소문자로 변경하면 문자열의 길이를 줄일 수 있습니까?대문자를 소문자로 변경하면 문자열의 길이를 줄일 수 있습니까?
void lower(char *s)
{
int i;
for (i=0;i<strlen(s);i++)
if(s[i])>='A' && s[i]<='Z')
s[i]-=('A'-'a');
}
한 문자를 다른 문자로 바꾸면 결과 문자열의 크기가 그대로 유지됩니다. 유형 char
은 항상 C 또는 C++에서 1 바이트로 정의됩니다.
아니요.
일부 다른 것들
가 참고 :strlen
을 계산하고
ASCII로 작업하고 있으므로 분명히 일대일 교체를 수행하고있는 것입니다. UTF-8을 지원하도록 코드를 변경해야합니까?
이 코드 은 문자열의 길이을 변경하지 않습니다. 그러나 코드가 인 문제가 있습니다. 중복되는 모든 반복마다 strlen()
을 계산하십시오. 변수에 결과를 저장하고 루프에 사용하십시오.
두 번째 요점이 잘못되었습니다. –
@DavidHeffernan, 나는 엉망이되었습니다. 지금 편집되었습니다. – iammilind
문자열이 대소 문자를 변경하면 길이가 바뀔 수 있습니다. 예를 들어, 독일어의 경우 두 문자 문자열 "SS"는 이 특정 문맥에서 "ß"라는 단일 문자 문자열이됩니다 (단, 이외의 문자 : "STRASSE"-> "Straße"이지만 "GASSE"-> "Gasse"). 대소 문자를 올바르게 바꾸는 일은 분명히 중요하지 않으며 매우 로케일 과 같은 것입니다. 표준에 대한 실질적인 지원은 없습니다.
코드는 길이를 변경하지 않습니다 게시,하지만, 제대로 에서 멀리이다 :, 인코딩에 따라, 그것은 (알파벳은 항상 연속되지 않습니다)뿐만 아니라 어떤 알파벳이 아닌 문자를 변경할 수 있으며, 확실히 일부 알파벳 문자를 변환하지 못합니다. 'Ä', 'Ö'및 스웨덴어로 'Ü'입니다.
무엇이 문제입니까? 문자열을 소문자로 변경할 때 일반 * (인코딩 및 가능한 로케일에 따라 다를 수 있음) 또는 특정 코드 조각이 문자열의 길이를 변경하는지 여부를 결정할 수 있습니까? – jalf
대신 std :: tolower를 사용해야합니다. 코드를 사용하면 코드가 변경되지 않으므로 길이를 변경하지 않아도됩니다. – sehe
C++을 사용하는 경우에는'std :: string','tolower' 등을 사용하고 더 높은 코드로 이동해야합니다 추상화 수준. –