2012-11-22 2 views
0

두 배로 콤보 상자에서 문자열을 변환 :나는 다음을 수행하려고

CCombobox m_obs; 
CString temp; 

m_obs.GetWindowTextA(temp); 
double newObs = strtod(temp, NULL); 

그러나, 나는 CString에서 const char *에 더 적합한 변환 기능이 존재하지 strtod()에 오류가 발생합니다.

어떻게 문자열을 콤보 박스에서 이중으로 변환합니까?

+3

프로젝트에서 UNICODE를 사용하도록 설정하지 않은 경우이 작업을 수행해야합니다.이 경우 문자열을 ANSI로 변환해야합니다. –

+0

@aleguna 답변처럼 들립니다. –

+0

답변에 많은 감사드립니다. 내 프로젝트는 UNICODE입니다. 나는 그것을 Not Set와 Multi-Byte Character set으로 변경했지만,'LNK1561 : 진입 점을 정의해야한다. '라는 오류가 발생합니다. –

답변

1

답장을 보내 주셔서 감사합니다.

double NewObs = wcstod(temp, NULL); 
1

strtod() 첫 번째 인수는 const char * str입니다. 해야 할 일 :

const char* cstr = (LPCTSTR)temp; 
double newObs = strtod(cstr, NULL); 
+2

CString은 암시 적 변환 연산자가'LPCTSTR'에 있습니다. 컴파일러가 가져 가지 않았다는 사실은 OP의 프로젝트에 UNICODE LPCTSTR은 넓은 char 문자열입니다. 어느 의미'const char * cstr = (LPCTSTR) temp; '도 작동하지 않습니다 –

+0

고마워요. – Maroun

+0

답변에 많은 감사드립니다. 내 프로젝트는 UNICODE입니다. 나는 그것을 Not Set와 Multi-Byte Character set으로 변경했으나, 빌드 오류 LNK1561을 얻었습니다 : 진입 점을 정의해야합니다. –

2

는 ANSI 버전의 사용을 강제하는 대신 CStringA을 시도 그렇지 않으면 CString을 유니 코드가 기본값입니다 컴파일러 스위치에 따라 달라집니다 :

유니 코드 프로젝트의

는 다음을 수행합니다.

관련 문제