C ++ найти функцию для вектора - PullRequest
4 голосов
/ 25 июня 2011

Я хочу найти пустой пробел " " в моем vector<unsigned char> message

vector<unsigned char>::iterator pos;
pos = find(message.begin(), message.end(), " ");

И я получаю ошибку:

/usr/include/c++/4.5/bits/stl_algo.h: In function ‘_RandomAccessIterator std::__find(_RandomAccessIterator, _RandomAccessIterator, const _Tp&, std::random_access_iterator_tag) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char> >, _Tp = char [2]]’:
/usr/include/c++/4.5/bits/stl_algo.h:4209:45:   instantiated from ‘_IIter std::find(_IIter, _IIter, const _Tp&) [with _IIter = __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char> >, _Tp = char [2]]’
../source/InveritasServer.cpp:107:49:   instantiated from here
/usr/include/c++/4.5/bits/stl_algo.h:158:4: error: ISO C++ forbids comparison between pointer and integer
/usr/include/c++/4.5/bits/stl_algo.h:4209:45:   instantiated from ‘_IIter std::find(_IIter, _IIter, const _Tp&) [with _IIter = __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char> >, _Tp = char [2]]’
../source/InveritasServer.cpp:107:49:   instantiated from here
/usr/include/c++/4.5/bits/stl_algo.h:162:4: error: ISO C++ forbids comparison between pointer and integer
/usr/include/c++/4.5/bits/stl_algo.h:166:4: error: ISO C++ forbids comparison between pointer and integer
/usr/include/c++/4.5/bits/stl_algo.h:170:4: error: ISO C++ forbids comparison between pointer and integer
/usr/include/c++/4.5/bits/stl_algo.h:178:4: error: ISO C++ forbids comparison between pointer and integer
/usr/include/c++/4.5/bits/stl_algo.h:182:4: error: ISO C++ forbids comparison between pointer and integer
/usr/include/c++/4.5/bits/stl_algo.h:186:4: error: ISO C++ forbids comparison between pointer and integer

Ответы [ 3 ]

10 голосов
/ 25 июня 2011

Вы должны использовать ' ' вместо " ":

pos = find(message.begin(), message.end(), ' ');

Обратите внимание, что " " является строковым литералом, а ' ' является символьным литералом. В качестве третьего аргумента необходимо указать символьный литерал, поскольку message - это вектор символов, а не строк.

4 голосов
/ 25 июня 2011

Вы ищете строку, а не unsigned char.

Попробуйте это.Обратите внимание на одинарные кавычки.

pos = find(message.begin(), message.end(), ' ');
1 голос
/ 25 июня 2011

Это вектор "unsigned char", и вы пытаетесь найти в нем строку. Отправьте тип без знака.

...