Я начал писать программу для подстрок выводов, но она не работает и всегда находила подстроку. Это было странное поведение, поэтому я написал простую программу:странное поведение стандартной библиотеки строк C++
#include <iostream>
#include <string>
using namespace std;
int main(){
string str;
str = "aaaa";
unsigned found = str.find("bbbb");
if(found!=std::string::npos){
cout << "I FOUND IT!!!!\n";
}
return 0;
}
и отображает текст «Я НАЙДЕЕСЬ !!!!» Я не понимаю, что происходит.
кажется здесь не проблема: http://ideone.com/DfeGtM – taocp
Какой у вас компилятор/stdlib? – oscode
ideone 32bit, где 'sizeof (std :: string :: size_type) == sizeof (unsigned)'. В 64-битной архитектуре, подобной тому, что у этого человека есть, 'sizeof (size_type)', вероятно, 8 байтов, а нуль, расширяющий 'found' до 8 байтов, приведет к тому, что он будет отличаться от' size_type', который равен '-1'. – yiding