두 배로 콤보 상자에서 문자열을 변환 :나는 다음을 수행하려고
CCombobox m_obs;
CString temp;
m_obs.GetWindowTextA(temp);
double newObs = strtod(temp, NULL);
그러나, 나는 CString
에서 const char *
에 더 적합한 변환 기능이 존재하지 strtod()
에 오류가 발생합니다.
어떻게 문자열을 콤보 박스에서 이중으로 변환합니까?
두 배로 콤보 상자에서 문자열을 변환 :나는 다음을 수행하려고
CCombobox m_obs;
CString temp;
m_obs.GetWindowTextA(temp);
double newObs = strtod(temp, NULL);
그러나, 나는 CString
에서 const char *
에 더 적합한 변환 기능이 존재하지 strtod()
에 오류가 발생합니다.
어떻게 문자열을 콤보 박스에서 이중으로 변환합니까?
답장을 보내 주셔서 감사합니다.
double NewObs = wcstod(temp, NULL);
strtod()
첫 번째 인수는 const char * str
입니다. 해야 할 일 :
const char* cstr = (LPCTSTR)temp;
double newObs = strtod(cstr, NULL);
CString은 암시 적 변환 연산자가'LPCTSTR'에 있습니다. 컴파일러가 가져 가지 않았다는 사실은 OP의 프로젝트에 UNICODE LPCTSTR은 넓은 char 문자열입니다. 어느 의미'const char * cstr = (LPCTSTR) temp; '도 작동하지 않습니다 –
고마워요. – Maroun
답변에 많은 감사드립니다. 내 프로젝트는 UNICODE입니다. 나는 그것을 Not Set와 Multi-Byte Character set으로 변경했으나, 빌드 오류 LNK1561을 얻었습니다 : 진입 점을 정의해야합니다. –
는 ANSI 버전의 사용을 강제하는 대신 CStringA
을 시도 그렇지 않으면 CString을 유니 코드가 기본값입니다 컴파일러 스위치에 따라 달라집니다 :
는 다음을 수행합니다.
프로젝트에서 UNICODE를 사용하도록 설정하지 않은 경우이 작업을 수행해야합니다.이 경우 문자열을 ANSI로 변환해야합니다. –
@aleguna 답변처럼 들립니다. –
답변에 많은 감사드립니다. 내 프로젝트는 UNICODE입니다. 나는 그것을 Not Set와 Multi-Byte Character set으로 변경했지만,'LNK1561 : 진입 점을 정의해야한다. '라는 오류가 발생합니다. –