2014-11-06 1 views
1

시험 개정을 수행하는 동안 이전 과제물에 조금 머물러 있습니다. 콘솔에서 4 개의 값을 읽었으나 한 줄로 읽었습니다. GPS 좌표입니다. 예를 들어 입력은 25 46 3 S 일 수 있습니다. 값을 읽으려면 다음 코드를 사용하고 있습니다.한글 문자 던지기 QString to Char

cout << "Latitude: "; 
latitudeLine = cin.readLine(); 

QStringList args = latitudeLine.split(" "); 
degrees = args[0].toInt(); 
minutes = args[1].toInt(); 
seconds = args[2].toInt(); 
cardinalDirection = args[3]; 

latitudeLine은 QString입니다. 도, 분 및 초는 정수이며 cardinalDirection은 char입니다. 질문에 UML 다이어그램으로 나에게 주어 지듯이 나는 이것을 바꿀 수 없다. 모든 것은 괜찮습니다. 마지막 라인에서 QString을 char 변수에 할당하면 작동하지 않습니다. 그물 주위를 둘러 보았고 긴 QString을 char *로 변환한다는 것이 발견되었지만 char가 아닌 char *이 필요하다는 오류가 발생합니다. 이것은 항상 단일 문자가됩니다. QString을 char로 형변환하는 간단한 방법이 있습니까?

미리 감사드립니다.

답변

3

인덱스 연산자를 다음과 같이 사용하지 않는 이유는 무엇입니까? args[3][0].toAscii()? 인덱스 연산자는 위치 0에 QChar을 반환하고 QChar::toAsciiQChar 안에 char을 반환합니다.

참고 : args[3]이 비어 있지 않은지 확인하는 것을 잊지 마십시오. 그렇지 않으면 색인 연산자가 응용 프로그램을 중단시킵니다.

편집 : 말했다 @hyde으로 QString::toLatin1 대신 QString::toAscii를 사용합니다.

+0

저는 아직 Qt에 익숙하지 않아 제공하는 모든 기능에 익숙하지 않습니다. 내가 할 수있을 때 나는 문서를 통해 읽어보십시오. 첫 번째 답변에서 char가 아닌 QChar가 반환되었지만 toAscii() 함수를 전혀 알지 못했습니다! 정말 고맙습니다. Worked 100 % – nickcorin

+4

@nickcorin'toAscii()'를 사용하지 마십시오. 사람들이 혼동을 일으킬뿐 아니라 Qt5에서 삭제되었으므로 이름이 말한 내용을 실제로 수행하지 않습니다 (자세한 내용은 문서를 읽으십시오). 보통 대신'toLatin1()'을 사용해야합니다. – hyde

+0

그래, 고마워, 내가 대신 할거야. – nickcorin