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

int main() {
	std::vector<std::string> strings;
	strings.push_back("1.200e+12");
	strings.push_back("1.0200e+12");
	strings.push_back("1.0000e+12");
	strings.push_back("1.0e+12");
	strings.push_back("1.e+12");
	strings.push_back("100e");
	strings.push_back("100e+12");
	std::regex reg(R"((\d*)(?:(?=[.]0*e)[.]0*|(?![.]0+e)([.][0-9]*?)0*)(e(?:[+]\d+)?))");
	for (size_t k = 0; k < strings.size(); k++)
	{
		std::cout << "Next string: " << strings[k] << std::endl;
		std::cout << "Replace result: " 
		             << std::regex_replace(strings[k], reg, "$1$2$3") << std::endl;
	}
	return 0;
}