3

我有一个变量:char * tmp我用它做很少的操作。最后,我有这样的东西,"fffff"但有时在 fffff 之前是"\n". 我怎样才能删除它?

4

4 回答 4

6
char *tmp = ...;

// the erase-remove idiom for a cstring
*std::remove(tmp, tmp+strlen(tmp), '\n') = '\0'; // removes _all_ new lines.
于 2012-06-18T19:58:44.953 回答
4

在您的问题中,您正在谈论将此字符串传递给套接字。当将 char* 指针传递给将复制它的套接字之类的东西时,执行此操作的代码非常简单。

在这种情况下,您可以这样做:

if (tmp[0] == '\n')
  pass_string(tmp+1); // Passes pointer to after the newline
else
  pass_string(tmp);   // Passes pointer where it is
于 2012-06-18T20:26:45.937 回答
2

在 C 中:

#include <string.h>
tmp[strcspn(tmp, "\n")] = '\0';
于 2012-06-19T09:15:50.690 回答
1

如果 tmp 是动态分配的,请记住使用以下命令释放它tmp

if (tmp[0] == '\n') {
    tmp1 = &tmp[1];
}
else {
    tmp1 = tmp;
}

// Use tmp1 from now on
于 2012-06-18T19:46:14.403 回答