자려고 누웠는데 갑자기 궁금해지네요. C / C++로 코딩을 연습하면서 한번도 타입이 랜덤인 데이터들을 다루지는 않았는데요.
예를들어
123 <- int abcd <- string 456 <- int
이런식으로 데이터가 입력될때, 어떻게 int로 string으로 알고 알맞은 자료형 변수에 담을 수 있을까요?
읽어주셔서 감사합니다.
어떤 프로그램이던지 그 목적이 있고, 그에 따라 입력과 출력이 정해집니다. 그리고 각종 프로토콜과 규칙이 정의가 되죠. 그에 맞지 않는 데이터는 예외처리하면 그만일 뿐, 무작위로 들어오는 데이터를 모두 케어해야 할 의무는 없습니다.
질문과 같은 상황과 비슷한게 있다면, 컴파일러나 파서 같은 걸 들 수 있을 것 같네요. 임의의 문자열에서 토큰을 분리해 내고, 토큰을 각각의 타입으로 분류하니까요.. 각각의 타입들도 정해진 규칙이 있으니, 그 규칙을 정의하면 원하는 타입으로 분류할 수 있습니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
아래 링크를 활용해서 입력되는 모든 데이터의 자리수를 검사하는 방법이 있습니다.
https://linux.die.net/man/3/isdigit
소곤소곤
일반적으로 소프트웨어에 입력되는 데이터는 보내는 이와 받는 이 사이에 형식에 대한 약속이 되어 있어야 합니다. 보통 TLV (Type, Length, Value) 식으로 보내기도 하는데 예를 들어 'Hello'를 보내기 위해서는 '1'(문자를 의미하는 구분 코드라고 하고), '5', 'Hello' 식으로, 또는 3.14를 보내기 위해서는 '2'(실수를 의미하는 구분 코드라고 하고), '4', 3.14 라는 식이지요.
"정말 일반적인" 상황에서는, 데이터 전송 할 때 윗 분이 말씀하신 것 처럼
TLV 형태로 전송하게 됩니다. 특정 프로세스(혹은 어플리케이션)끼리 통시는
TLV부터 정의하는데서 시작합니다.
TLV 형태 뿐만아니라 처리하는 방법까지 통틀어서 이것을 "프로토콜" 이라고 부릅니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
음 ..
어떤 프로그램이던지 그 목적이 있고, 그에 따라 입력과 출력이 정해집니다.
그리고 각종 프로토콜과 규칙이 정의가 되죠.
그에 맞지 않는 데이터는 예외처리하면 그만일 뿐, 무작위로 들어오는 데이터를 모두 케어해야 할 의무는 없습니다.
질문과 같은 상황과 비슷한게 있다면, 컴파일러나 파서 같은 걸 들 수 있을 것 같네요.
임의의 문자열에서 토큰을 분리해 내고, 토큰을 각각의 타입으로 분류하니까요..
각각의 타입들도 정해진 규칙이 있으니, 그 규칙을 정의하면 원하는 타입으로 분류할 수 있습니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
아래 링크를 활용해서 입력되는 모든 데이터의 자리수를
아래 링크를 활용해서 입력되는 모든 데이터의 자리수를 검사하는 방법이 있습니다.
https://linux.die.net/man/3/isdigit
소곤소곤
일반적으로 소프트웨어에 입력되는 데이터는 보내는 이와
일반적으로 소프트웨어에 입력되는 데이터는 보내는 이와 받는 이 사이에 형식에 대한 약속이 되어 있어야 합니다. 보통 TLV (Type, Length, Value) 식으로 보내기도 하는데 예를 들어 'Hello'를 보내기 위해서는
'1'(문자를 의미하는 구분 코드라고 하고), '5', 'Hello' 식으로, 또는 3.14를 보내기 위해서는 '2'(실수를 의미하는 구분 코드라고 하고), '4', 3.14 라는 식이지요.
"정말 일반적인" 상황에서는, 데이터 전송 할 때 윗
"정말 일반적인" 상황에서는, 데이터 전송 할 때 윗 분이 말씀하신 것 처럼
TLV 형태로 전송하게 됩니다. 특정 프로세스(혹은 어플리케이션)끼리 통시는
TLV부터 정의하는데서 시작합니다.
TLV 형태 뿐만아니라 처리하는 방법까지 통틀어서 이것을 "프로토콜" 이라고 부릅니다.
댓글 달기