2011-10-28 69 views
1

我是使用boost :: lexical_cast的新手,對它的內部知識瞭解甚少。我嘗試做如下轉換:boost :: lexical_cast從字符串到字符的異常

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

然而,升壓抱怨,上面的代碼是:

[例外]:壞詞法投:源類型的值不能被解釋爲目標

源是一個字符串,但它總是隻有1個字符長。

請問有人能解釋一下嗎?

謝謝。

+1

是否有你這樣做的原因,而不是像'char c = *(sourceString.c_str());'?爲什麼你把一個字符串變成一個字符並把它放回到一個字符串中? –

+3

或者'char c = sourceString [0];'? –

+0

@MikeSeymour或者你可以做到這一點... –

回答

4

當我測試它時(修復從charstring的無效轉換之後),只要sourceString包含單個字符,詞法轉換就會成功。 Here are the test results.

如果您的真實代碼無效,請發佈更多內容;最好是一個演示錯誤的可運行程序。

+0

感謝您的回答。我有一個向量,我知道在位置索引x的字符串只會是一個字符,所以基本上我在做以下操作:char someChar = lexical_cast (tokens [x]);這是拋出錯誤的原因。對不起,應該在之前發佈過。謝謝。 – czchlong

+2

也許你應該檢查你的假設;在轉換之前添加'assert(tokens [x] .length()== 1);'以確保你所知道的實際上是發生了什麼。 –

+0

是的,邁克你是正確的,我的假設是不正確的。謝謝! – czchlong