How should I go about making a currency conversion system?

I am extremely new to C++, and in an attempt to expand my knowledge of it, I decided to make a currency converter. However, after coding in a list of ~200 currencies I would like to be able to convert to and from, I realized that this would take forever to code. So, my question is, would it be possible to store data such as "1 USD is __ EUR" in an array, and use that array to convert other currency like EUR to CAD? Is there a more efficient way of doing this that is specific to C++? My current code is below, thank you all in advance.

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

int choice;
int choice2;
int choice3;

int main()
{

cout << "Hello! Welcome to this converter! If you want to see all possible conversions, type 1. If not, type 0 to skip straight to the conversions!";  

cin >> choice;

cout << "Your choice: " << choice << endl;
 
cin >> choice;
cin >> choice2;
cin >> choice3;  


    if (choice == 1)
    {
        cout << "Major World Currencies: United States Dollar, $ (USD)  Euro, € (EUR)  BrEuropitish Pound Sterling, £ (GBP)  Japanese Yen, ¥ (JPY)  Swiss Franc, Fr (CHF)  Australian Dollar, $ (AUD)  Canadian Dollar, $ (CAD)  Hong Kong Dollar, $ (HKD)  Chinese Yuan, ¥ (CNY)  Russian Ruble, ₽ (RUB)" << endl;
        cout << " " << endl;
        cout << "European Currencies:  Albanian Lek (ALL)  Bosnia-Herzegovina Convertible Mark (BAM)  Bulgarian Lev (BGN)  Belarusian Ruble (BYN)  Czech Republic Koruna (CZK)  Danish Krone (DKK)  Guernsey Pound (GGP)  Gibraltar Pound (GIP)  Croatian Kuna (HRK)  Hungarian Forint (HUF)  Icelandic Króna (ISK)  Jersey Pound (JEP)  Moldovan Leu (MDL)  Macedonian Denar (MKD)  Manx pound (Isle of Man) (IMP)  Norwegian Krone (NOK)  Polish Zloty (PLN)  Romanian Leu (RON)  Serbian Dinar (RSD)  Swedish Krona (SEK)  Ukrainian Hryvnia (UAH)" << endl;
        cout << ' ' << endl;
        cout << " Middle East Currencies United Arab Emirates Dirham (AED)  Bahraini Dinar (BHD)  Israeli New Sheqel (ILS)  Iraqi Dinar (IQD)  Iranian Rial (IRR)  Kuwaiti Dinar (KWD)  Omani Rial (OMR)  Qatari Rial (QAR)  Saudi Riyal (SAR)  Syrian Pound (SYP)  Turkish Lira (TRY)  Yemeni Rial (YER)  » hide » North American Currencies Bermudan Dollar (BMD)  Mexican Peso (MXN)  " << endl;
        cout << "" << endl;
        cout << "Central American Currencies: Belize Dollar (BZD)  Costa Rican Colón (CRC)  Salvadoran Colón (SVC)  Guatemalan Quetzal (GTQ)  Honduran Lempira (HNL)  Nicaraguan Cordoba (NIO)  Panamanian Balboa (PAB)" << endl;
        cout << "" << endl;
        cout << "Currencies of the Caribbean:  Aruban Florin (AWG)  Barbadian Dollar (BBD)  Bahamian Dollar (BSD)  Cayman Islands Dollar (KYD)  Cuban Convertible Peso (CUC)  Cuban Peso (CUP)  Dominican Peso (DOP)  Haitian Gourde (HTG)  Jamaican Dollar (JMD)  East Caribbean Dollar (XCD)  Netherlands Antillean Guilder (ANG)  » hide » South American Currencies Argentine Peso (ARS)  Bolivian Boliviano (BOB)  Brazilian Real (BRL)  Chilean Peso (CLP)  Chilean Unidad de Fomento (CLF)" << endl; 
        cout << "" << endl;
        cout << "South American Currencies: Argentine Peso (ARS)  / Bolivian Boliviano (BOB)  / Brazilian Real (BRL)  / Chilean Peso (CLP)  / Chilean Unidad de Fomento (CLF)  / Colombian Peso (COP)  / Guyanaese Dollar (GYD)  / Peruvian Sol (PEN)  / Paraguayan Guarani (PYG)  / Surinamese Dollar (SRD)  / Trinidad and Tobago Dollar (TTD)  / Uruguayan Peso (UYU)  / Venezuelan Bolívar Soberano (VES)" << endl;
        cout << "" << endl;
        cout << "African Curriencies: Angolan Kwanza (AOA)  / Burundian Franc (BIF)  / Botswanan Pula (BWP)  / Congolese Franc (CDF)  / Cape Verdean Escudo (CVE)  / Djiboutian Franc (DJF)  / Algerian Dinar (DZD)  / Egyptian Pound (EGP)  / Eritrean Nakfa (ERN)  / Ethiopian Birr (ETB)  / Falkland Islands Pound (FKP)  / Gambian Dalasi (GMD)  / Ghanaian Cedi (GHS)  / Guinean Franc (GNF)  / Kenyan Shilling (KES)  / Comorian Franc (KMF)  / Lebanese Pound (LBP)  / Liberian Dollar (LRD)  / Lesotho Loti (LSL)  / Libyan Dinar (LYD)  / Moroccan Dirham (MAD)  / Malagasy Ariary (MGA)  / Mauritanian Ouguiya (MRU)  / Mauritian Rupee (MUR)  / Malawian Kwacha (MWK)  / Mozambican Metical (MZN)  / Namibian Dollar (NAD)  / Nigerian Naira (NGN)  / Rwandan Franc (RWF)  / Seychellois Rupee (SCR)  / Sudanese Pound (SDG)  / South Sudanese Pound (SSP)  / Saint Helena Pound (SHP)  / Sierra Leonean Leone (SLL)  / Somali Shilling (SOS)  / São Tomé and Príncipe Dobra (pre-2018) (STD)  / São Tomé and Príncipe Dobra (since 2018) (STD)  / Swazi Lilangeni (SZL)  / Tunisian Dinar (TND)  / Tanzanian Shilling (TZS)  / Ugandan Shilling (UGX)  / CFA Franc BEAC (XAF)  / CFA Franc BCEAO (XOF)  / South African Rand (ZAR)  / Zambian Kwacha (ZMW)  / Zimbabwean Dollar (ZWL)" << endl;
        cout << "" << endl;
        cout << "Currencies of Australia and Oceania: Fijian Dollar (FJD)  / French Polynesia CFP Franc (XPF)  / New Zealand Dollar (NZD)  / Papua New Guinean Kina (PGK)  / Samoan Tala (WST)  / Solomon Islands Dollar (SBD)  / Tongan Paʻanga (TOP)  / Vanuatu Vatu (VUV) " << endl;
        cout << "" << endl;
        cout << "Other Currencies and More: Bitcoin (BTC)  / Gold (troy ounce) (XAU)  / Silver (troy ounce) (XAG)  / Palladium (troy ounce) (XPD)  / Platinum (troy ounce) (XPT)  / Special Drawing Rights (International Monetary Fund) (XDR) " << endl;
    }

    else if (choice == 0)
    {
        cout << "Type in the amount of USD you want to convert. NOTE: Other starting currencies coming soon. " << endl;
        cin >> choice2;
        cout << "Type in the currency you want to convert USD to. " << endl;
        cin >> choice3;
    }

You could use an unordered_map which maps strings (the currency) to floats or doubles which contains the exchange rate from dollars. for example map["euro"] is equal to 0.88 because (at the time of writing) 0.88 EUR = 1 USD. To convert from a non-USD currency to another non-USD currency, you could convert the first currency to USD, and then convert that to the second currency.

#include <iostream>
#include <unordered_map>
#include <string>

int main(){
    std::unordered_map<std::string, float> exchange_rate{
        /* the exchange rates from USD go here */
    };
    std::string currency1, currency2;
    float currency1_amount;
    std::cin >> currency1 >> currency2 >> currency1_amount;
    // make sure the currencies exist
    if (exchange_rate[currency1] <= 0 || exchange_rate[currency2] <= 0){
        std::cout << "Currency does not exist\n";
        return 1;
    }
    // convert currency1 to USD
    float currency1_in_usd = currency1_amount / exchange_rate[currency1];
    // convert to currency 2
    float conversion = currency1_in_usd * exchange_rate[currency2];
    std::cout << currency1_amount << " " << currency1 << " = " << conversion << " " << currency2 << "\n";
}

Of course, you could use another base currency. Also note that exchange rates change over time, meaning that you would have to update the values in the map, or use an API to get them.