사용. 귀하의 예제에서 fir은 문자열로 선언됩니다. int (fir)을 (int) fir과 동일하게하려고하면 문자열에서 정수로 C 스타일 캐스트를 시도했습니다. 근본적으로 당신은 쓰레기를 얻을 것이다. 왜냐하면 C++로 된 c-style 캐스팅은 사용 가능한 모든 캐스팅을 통과하여 작동하는 첫 번째 캐스팅을 수행 할 것이기 때문이다. 기껏해야 사용하는 문자 인코딩 (UTF-8, ascii 등 ...)에 의존하는 문자 2를 나타내는 메모리 값을 가져올 것입니다. 예를 들어, fir에 "2"가 포함 된 경우 정수 값으로 0x32를 얻을 수 있습니다 (ascii라고 가정). 실제로 C 스타일의 캐스트는 사용하지 말아야하며, 실제로 사용하는 것이 안전한 유일한 곳은 숫자 유형 간의 변환입니다.
예를 들어 주어진 문자열이 strtok와 같은 함수를 사용하여 문자열을 관련 문자 시퀀스 (토큰)로 분리해야합니다. 이 간단한 예제에서는 "2", "+"및 "2"가됩니다. 일단 문자열로 변환하면 atoi와 같은 함수를 간단하게 호출하여 정수로 변환 할 수 있습니다.
예 : 당신은뿐만 아니라 정수가 아닌 숫자를 처리 할 수 있도록하려면
string str = "2";
int i = atoi(str.c_str()); //value of 2
그러나이 약간 더 복잡합니다. 이 경우 가장 좋은 방법은 피연산자 (+ -/* 등)를 분리 한 다음 숫자 문자열에서 소수점을 찾습니다.하나를 찾으면 이중으로 취급하고 atoi 대신 atof 함수를 사용하고, 그렇지 않으면 atoi를 사용하십시오.
왜이 것이 다운 되었습니까? – MGZero
@MGZero 누군가가 바보가되어 대답을 downvoting입니다. – Kiril
최근 SO의 순서와 비슷합니다. –