문자열에 문자를 더할 때, 문자를 '0' 이렇게 char형으로 더하지 않고 "0" 처럼 string형태로 더한다는 사실을 깨달았다. 이유가 궁금해서 정리해본다.
'0': Character (문자)'0'은 문자 리터럴이며, 단일 문자를 표현합니다.
내부적으로는 ASCII 값 48을 의미합니다.
예를 들어:
char c = '0'; // 문자 '0' (ASCII 값 48)
숫자 문자열을 만들 때 '0'을 사용하면, std::string과의 연산에서 타입 호환 문제가 발생할 수 있습니다.
std::string s = "Time: ";
s += '0'; // 가능: std::string은 char 추가를 지원
"Time: 0"그러나 복잡한 연산에서 '0'을 문자열로 처리하려는 의도가 잘 드러나지 않을 수 있습니다.
"0": String (문자열)"0"은 문자열 리터럴로, 문자 하나로 구성된 문자열입니다.
내부적으로는 문자를 배열로 저장하며, \0 (널 문자)이 포함되어 문자열의 끝을 표시합니다.
예를 들어:
std::string str = "0"; // 문자열 "0"
문자열에 문자열을 더할 때는 "0"이 더 직관적이며, 다른 문자열과의 결합 연산에서 호환성이 좋습니다.
std::string s = "Time: ";
s += "0"; // 문자열 추가
"0"을 사용하는가?std::string 타입과 결합하려면 문자열과 결합하는 것이 직관적이고 안전합니다.
std::string result;
int number = 5;
if (number < 10) {
result = "0" + std::to_string(number); // "05"
}
"0"을 사용하면 문자열 간의 연산이 명확하게 처리됩니다.'0'을 사용하면 암묵적인 변환(예: char → std::string)이 이루어져 혼란을 초래할 수 있습니다."0"은 문자열로, '0'은 단일 문자로 사용됩니다."0"을 사용하는 것이 더 적합하며, 의도와 의미가 명확하게 전달됩니다.