string::nposについて(c++)

知らずに使ってた

string::nposはstring型のfindで見つからなかったときに返ってくる値です。

int main(){
   string s = "aaa";
   if(s.find('b') == string::npos) cout << "Not found" << endl;
}
Not found




この前、int型にstring::nposを入れたら-1だったので、おかしいなぁーって思ってたので実験してみました。

int main(){
  bitset<100> bit(string::npos);
  if(string::npos==INT64_MAX) cout<<"Yes"<<endl;
  if(string::npos==UINT64_MAX) cout<<"OhYes"<<endl;
  cout<<bit<<endl;
}
OhYes
0000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111

int型の-1は全ビットが1なのでint型に入れたら-1になるよねー。