c++ - 如何从字符数组中去除换行符?

标签 c++ pointers 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;
}

现在我想从字符数组中去除所有的行尾。 如果不先将字符数组转换为字符串,我该怎么做?

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

最佳答案

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

对于一些 C++11 lambda 的乐趣:

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

关于c++ - 如何从字符数组中去除换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10490367/

相关文章:

c++ - char* argv[] 在 C/C++ 中如何工作?

C++ unique_ptr 不调用析构函数

C编程打印文件的字符数组

java - 如何计算用户输入中的字符、字母、空格

c++ - 使用 QOpenGLContext 在小部件中进行渲染

c++ - 将 char[N] 参数传递给线程

c - 传递一个二维结构数组

c - Arduino char *来自字符串的名称

android - 在 Android Studio 中链接外部库 (gradle)

c++ - 如何从 map 中的集合中删除元素?