Help please

I want to create a c ++ program that will communicate with the arduino via a cloud, I explain this program is used to control the irrigation that's means that I have a humidity sensor on the ground and he will send to me the data he capte to the cloud and I will retrieve them with my c ++ program and treat them to finally do action with arduino.
the problem is: what cloud to use and how I will retrieve and send data to this cloud and in what format will be given.
and what i will use: arduino + shield or esp.
is a esp as same as arduino??

Start by buying an Arduino Uno and a soil moisture sensor, and learn how they work and how to use them.

The "cloud" comes much later.

is a esp as same as arduino??

You can program both ESP8266 and ESP32 devices with the Arduino development system.

If you use such a device, and you have a WLAN, it my be easier to contact cloud services than with say just a standard Uno.

Arduino recently released their "Arduino IoT Cloud":
https://create.arduino.cc/iot/
I think jremington's advice to be sure to learn the basics before you jump into a complex project is good. However, if you are making decisions now about buying hardware you are planning to use in the final project, you may want to do a little preliminary research about which cloud service you are going to use. In the case of Arduino IoT Cloud, only a few of the MKR boards are currently supported:
[url=http://https://www.arduino.cc/en/Create/FAQ#toc11]https://www.arduino.cc/en/Create/FAQ#toc11[/url]
If you purchase an ESP8266 or ESP32 with the expectation that you will be able to use it with Arduino IoT Cloud in the near future, you'll likely be disappointed. It's also somewhat unlikely that you'll be able to use an Uno for any complex project involving the cloud, but it is a good board to learn with because of the relative simplicity and excellent support.