小编wan*_*iju的帖子

C++逐行拆分

我需要逐行拆分.我以前用以下方式做的事情:

int doSegment(char *sentence, int segNum)
{
assert(pSegmenter != NULL);
Logger &log = Logger::getLogger();
char delims[] = "\n";
char *line = NULL;
if (sentence != NULL)
{
    line = strtok(sentence, delims);
    while(line != NULL)
    {
        cout << line << endl;
        line = strtok(NULL, delims);
    }
}
else
{
    log.error("....");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)

我输入"我们是一个.\n \n我们是." 并调用doSegment方法.但是当我调试时,我发现句子参数是"我们是一个.\\nyes we are",并且拆分失败了.有人能告诉我为什么会这样,我该怎么办.有没有其他我可以用来在C++中拆分字符串.谢谢 !

c++ split

30
推荐指数
3
解决办法
5万
查看次数

debugging c ++:../ nptl/sysdeps/unix/sysv/linux/raise.c:没有这样的文件或目录

我正在gdb用来调试C++程序.在线

assert(prevId ==  GetTagIdFromState(maxState));
Run Code Online (Sandbox Code Playgroud)
  • 参数prevId值是0;
  • 方法GetTagIdFromState(maxState) returns 50;

调试时,我收到以下错误.

Assertion `prevId == GetTagIdFromState(maxState)' failed.
Program received signal SIGABRT, Aborted.
0x00007ffff6ecbba5 in raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64    ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
      in ../nptl/sysdeps/unix/sysv/linux/raise.c
Run Code Online (Sandbox Code Playgroud)

c++ gdb

14
推荐指数
1
解决办法
3万
查看次数

标签 统计

c++ ×2

gdb ×1

split ×1