c - 查找 char 指针上的第一个操作

标签 c char eol

我有一个字符缓冲区,其中包含从文件读取的字符。我需要获取这个字符缓冲区并找到其中的第一个行尾字符。

本例中的 EOL 字符为\n、\r、\f。

最初,我计划执行以下操作:

// let's read into our buffer now...
char * m_pLineBuff;
if(!readCharBuf(m_pLineBuff, bytesToRead)) { report("Could not fill line buffer", RPT_ERROR, __PRETTY_FUNCTION__); }

// setup our newline candidates in an array
int iEOLChars[] = {'\n','\f','\r'};

// find the first instance of a newline character
int iEOLPosition = std::find_first_of(m_pLineBuff, m_pLineBuff+bytesToRead, iEOLChars, iEOLChars+3);

但是,我显然无法将 char 指针传递给 std::find_first_of 方法 - 我只能传递一个整数。编译器向我提供的确切错误是:

error: invalid conversion from ‘char*’ to ‘int’

这对我来说似乎很奇怪,因为我已经定义了字符缓冲区的开始和结束位置,但我不明白为什么它无法迭代它们来查找任何 EOL 字符的第一次出现。

关于如何解决这个问题有什么建议吗?有没有办法使用find_first_of,或者我应该简单地迭代字符缓冲区的每个位置并检查该位置的字符是否与我的任何EOL字符匹配。

我指的“find_first_of”函数是这个:http://www.cplusplus.com/reference/algorithm/find_first_of/

我们始终感谢任何帮助。

最佳答案

在本例中,函数 find_first_of 返回一个指针,而不是索引,因此请尝试:

char *iEOLPosition = std::find_first_of(m_pLineBuff, m_pLineBuff+bytesToRead, iEOLChars, iEOLChars+3);

关于c - 查找 char 指针上的第一个操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7006655/

相关文章:

arrays - C 在堆数组中搜索字符串

git - 为什么 git 将某些 cpp 文件视为二进制文件?

c++ - mmap Mac : Segmentation fault

c - 如何使用 NDK 在 ARM 内联汇编中执行简单循环?

c - 将数据移入和移出文件 X 位的最佳方法是什么?

c - Malloc 、 Realloc 、 Memset : Struct pointers , char、int 数组

c - 无法从函数中释放内存

c - 网络编程中char数组的问题

linux - 如何查找 Windows 行尾 (EOL) 字符

python - 带有引号的Python 2.7.6字符串文字错误