开发者

c++ find function for vector<unsigned char>

开发者 https://www.devze.com 2023-03-15 21:23 出处:网络
I want to find empty space char \" \" in my vector<unsigned char> message vector<unsigned char>::iterator pos;

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

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

And I get an error:

/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 p开发者_开发技巧ointer and integer


You should use ' ' instead of " ":

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

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


You are searching for a string, rather than an unsigned char.

Try this. Notice the single quotes.

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


It is a vector of "unsigned char" and you are trying to find in it a string. Send an unsigned char type.

0

精彩评论

暂无评论...
验证码 换一张
取 消