' P '

whatever I will forget

C++ find関数を使うときの注意点

findを使うときは、size_t型を使おうねって話と、string::nposも必需品って話

サンプルコード

#include <iostream>
#include <string>
using namespace std;

int main() {
    
    string alpha {"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"};
    string key {"XHAGSJSKCUENCKECSLSASDASDAaskdfjafjaaejnvnjeknvjsdnv"};
    string original_m;
    string encrypt_m;
    
    cout << "Enter your message..." << endl;
    getline(cin,original_m);
        
    for (char c: original_m) {
        size_t pos = alpha.find(c);
        cout << c << endl;
        cout << alpha.find(c) << endl;
        cout << pos << endl;
        
        if (pos != string::npos) {
            encrypt_m += (key.at(pos));
            //encrypt_m.push_back(key.at(pos));
        } else {
            encrypt_m += c;
            //encrypt_m.push_back(c);
        }
    }
    
    cout << "Encrypted message is..." << endl;
    cout << encrypt_m << std::endl;
    
    return 0;
}

上記のコードで、size_tではなく、intとかでposを見つけちゃおうとしたり、alpha.find(c)の値をそのまま使おうとすると、意味不明な値が入ってout of rangeになっちゃいます。
ちゃんと
size_t pos = alpha.find(c); の一文を使って
if (pos != string::npos) { で条件分岐を!