У меня есть буфер символов, который содержит символы, считанные из файла. Мне нужно взять этот буфер символов и найти в нем первый символ конца строки.
Символы 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
, или я должен просто перебирать каждую позицию буфера char и проверять, соответствует ли char в этом месте любому из моих символов EOL.
Я имею в виду функцию find_first_of: http://www.cplusplus.com/reference/algorithm/find_first_of/
Любая помощь всегда приветствуется.
char*
вfind_first_of
, какую ошибку вы получаете? Если вы этого не скажете, людям придется пытаться скомпилировать ваш код, а у большинства людей нет на это времени. Это может быть разницей между ответом или нет. - person Seth Carnegie   schedule 10.08.2011char *
может быть итератором? Первые два аргумента —char *
, а последние два —int *
, верно? Я всего лишь студент, пытающийся понять этот материал. Объяснение будет высоко оценено... спасибо. */ - person mmtauqir   schedule 10.08.2011++
,==
,*
,->
и!=
можно было использовать в итераторах, а шаблонные функции, принимающие итераторы, использовали только эти операторы. Указатели используют одни и те же операторы для одних и тех же операций, поэтому при использовании шаблонов компилятор все вычисляет за вас, и вы можете использовать любой тип, который поддерживает эти операторы. - person Seth Carnegie   schedule 10.08.2011