我試過memcpy/strncpy/std :: copy,但它們都沒有工作,導致程序崩潰。從字符數組中提取字符串
這裏就是我需要做的:
我試圖解析來自例如用戶輸入arguements。 「消息-add 0xAE」
我需要的0xAE部分提取到一個整數,繼承人一些僞代碼 _Input將持有滿弦「消息-add 0xAE」
if(strstr(_input,"message -add 0x")){
char* _temp;
std::copy(strlen("message -add 0x"),strlen("message -add 0x")+(strlen(_input)-strlen("message -add 0x")),_temp);
/* or */
memcpy(_temp,_input+strlen("message -add 0x"),strlen(_input)-strlen("message -add 0x"));
int _value = (int)_temp;
CLog->out("\n\n %d",_value);
}
編輯:感謝艾倫!
if(strstr(_input,"message -add 0x")){
char* _temp = new char[strlen(_input)-strlen("message -add 0x")];
memcpy(_temp,_input+strlen("message -add 0x"),strlen(_input)-strlen("message -add 0x"));
int _value = atoi(_temp);
CLog->out("\n\n %d",_value);
}
我看不到代碼的一部分,你試圖將一個字符串轉換爲整數 –
_temp將不會被初始化。 –
雖然你不想使用任何第三方代碼,因此排除了所有優秀的解析器,但你自己嘗試這樣做的嘗試很可能會以許多缺陷結束。爲什麼你想重塑這個特定的輪子?解析選項非常困難。除非你是一個高度熟練的開發人員,否則你應該很樂意使用可用的第三方代碼。 –