2012-04-18 77 views
0

我有兩個功能字符串轉換爲u_char *

foo(const string &value) 
{ 
    bar(...) 
} 

bar(const u_char *value, size_t len) 
{ 
    // do something 
} 

如何轉換一個常量字符串到u_char *?我相信我可以通過使用sizeof()函數來獲得size_t。

幫助非常感謝。

+0

有'uchar'之間有什麼區別'u_char',並'無符號char'的兩個類型別名? – Mankarse 2012-04-18 02:30:30

+0

對不起,我的意思是u_char而不是uchar。我編輯了代碼。我不相信有像uchar這樣的東西。 – user1314238 2012-04-18 02:31:41

+1

@ user1314238:標準C++中沒有'u_char'這樣的東西。 u_char'類型究竟是什麼? – 2012-04-18 02:40:02

回答

2

轉換爲char *是通過使用c_str()完成。

關於u_char轉換,我不認爲它有什麼不同。

這將幫助你:MSDN string converison

+0

是的,謝謝!我在1分鐘前想到了這一點,同時看着字符串API。 另外,我需要將結果轉換爲(u_char *) – user1314238 2012-04-18 02:39:04

+0

這是我的榮幸。 – Erwald 2012-04-18 02:39:35

1

您可以使用c_str()函數獲得std :: string的c風格字符串表示形式。只需撥打bar((u_char)value.c_str(),value.length())即可。對於c風格的字符串,簽名無關緊要。

+0

這是不正確的,因爲'bar'採用'u_char const *',而不是'u_char'。 – Mankarse 2012-04-18 02:37:03

+0

對不起,我錯誤地認爲'u_char'與'unsigned char'相同 – JosephH 2012-04-18 02:39:08

1

bar可以如下稱爲(假設u_char是某種char):從字符串

bar(reinterpret_cast<u_char const*>(value.c_str()), value.size())