我现在正在为学校开发一个服务器应用程序。目前,我正在尝试分解一个commandLine条目,该条目应该读入四个单独的常量字符*。
int state = 0;
char *token = std::strtok(commandLine, " ");
while(token != NULL)
{
switch(state)
{
case 0: c = token; break;
case 1: u = token; break;
case 2: p = token;break;
case 3: a = token; break;
}
token = std::strtok(NULL, " ");
state++;
}
const char* command = c.c_str();
const char* user = u.c_str();
const char* password = p.c_str();
const char* args = a.c_str();我意识到这并没有得到很好的优化;我已经尝试了很多不同的解决方案,因为我所尝试的一切都导致了seg错误。谢谢你的帮助!
发布于 2017-04-26 12:12:09
这是一个有趣的问题,^_^!我试着在我的计算机上运行这段代码,当我像这样定义commandLine时也遇到了同样的问题:
char* commandLine = "abc def ghi jkl";原因是函数strtok会修改字符串commandLine,部分源代码如下:
for ( ; *str ; str++ )
if ( map[*str >> 3] & (1 << (*str & 7)) ) {
*str++ = '\0';
break;
}因此,当我将定义更改为:
char commandLine[] = "abc def ghi jkl";这个问题对你很有用,谢谢~
https://stackoverflow.com/questions/43624648
复制相似问题