如何从char数组中删除换行符?

Hed*_*dge 2 c++ pointers char

我使用这个函数将文件的内容放在char数组中:

void Read::readFile(){
FILE * fp = fopen(this->filename,"rt");
fseek(fp, 0, SEEK_END);
long size = ftell(fp);
fseek(fp, 0, SEEK_SET);
char *pData = new char[size + 1];
fread(pData, sizeof(char), size, fp);
fclose(fp);
this->data = pData;
}
Run Code Online (Sandbox Code Playgroud)

现在我想从char数组中去掉所有的行结尾.如何在不首先将char-array转换为字符串的情况下执行此操作?

顺便说一句.这是我们不允许使用字符串库的作业的一部分.

Ben*_*igt 8

#include <algorithm>
size = std::remove(pData, pData + size, '\n') - pData;
pData[size] = 0; // optional
Run Code Online (Sandbox Code Playgroud)

对于一些C++ 11 lambda fun:

#include <algorithm>
size = std::remove_if(pData, pData + size, [](char c) { return c == '\n'; }) - pData;
pData[size] = 0; // optional
Run Code Online (Sandbox Code Playgroud)