2011-10-28 1 views
1

나는 boost :: lexical_cast를 처음 사용하고 있으며 내부에 대해 최소한의 이해 만하고있다. 나는 다음과 같은 캐스트하려고 노력하고 있어요 그러나boost :: lexical_cast from string to char 예외

string someString = boost::lexical_cast<char>(sourceString); 

을 부스트는 위의 코드는 불평한다 :

[예외] : 나쁜 어휘 캐스트 : 소스 유형 값이 대상

로 해석 될 수 없었다

소스는 문자열이지만 항상 길이는 1 자입니다.

누군가 설명해 주시겠습니까?

감사합니다.

+1

'char c = * (sourceString.c_str());'대신에 그 일을하는 이유가 있었습니까? 그리고 왜 문자열을 char로 바꾸고 그것을 문자열로 다시 넣고 있습니까? –

+3

아니면'char c = sourceString [0];'? –

+0

@MikeSeymour 아니면 그냥 할 수 있습니다 ... –

답변

4

유효하지 않은 변환을 char에서 string으로 수정 한 후 sourceString에 단일 문자가 포함되어있는 경우 어휘 캐스팅이 성공합니다. Here are the test results.

실제 코드가 작동하지 않으면 그 이상을 게시하십시오. 바람직하게는 오류를 나타내는 실행 가능한 프로그램.

+0

고마워요. 나는 벡터 을 가지고 있으며 위치 색인 x의 문자열이 한 문자 일 뿐이므로 본질적으로 다음을 수행하고 있음을 알아 두십시오. char someChar = lexical_cast (tokens [x]); 이것이 오류를 던지는 것입니다. 죄송합니다. 전에 게시 했어야합니다. 감사. – czchlong

+2

아마도 가정을 점검해야합니다. 아스트 (tokens [x] .length() == 1);'를 캐스팅 전에 추가하여 실제로 무엇이 일어나고 있는지 확인하십시오. –

+0

예 마이크가 맞습니다. 내 가정이 틀렸어. 감사! – czchlong