我试过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将不会被初始化。 –
虽然你不想使用任何第三方代码,因此排除了所有优秀的解析器,但你自己尝试这样做的尝试很可能会以许多缺陷结束。为什么你想重塑这个特定的轮子?解析选项非常困难。除非你是一个高度熟练的开发人员,否则你应该很乐意使用可用的第三方代码。 –