W C++ używa się kropki dziesiętnej zamiast przecinka, czyli musisz wpisać:
12.2
A jeżeli naprawdę zależy ci na przecinku to da się to zrobić, na przykład:
#include <locale>
#include <iostream>
struct decimal_point : std::numpunct<char>
{
char do_decimal_point() const override { return ','; }
};
int main()
{
std::cin.imbue(std::locale(std::cin.getloc(), new decimal_point));
std::cout.imbue(std::locale(std::cout.getloc(), new decimal_point));
//i teraz możesz wpisywać 12,2
double x;
std::cin >> x;
std::cout << x << '\n';
}