3

私は variable: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 に答える