message vector

C ++ search function for vector <unsigned char>

I want to find the empty space char " " in my vector<unsigned char> message

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

And I get the error message:

 /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 
+4
source share
3 answers

You should use ' ' instead of " " :

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

Note that " " is a string literal, and ' ' is a character literal. What you need to provide as the third argument is a character literal, because message is a vector of characters, not strings.

+10
source

You are looking for a string, not an unsigned char .

Try it. Pay attention to single quotes.

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

This is the "unsigned char" vector, and you are trying to find a string in it. Send unsigned char type.

+1
source

All Articles