字符串与数字的转换以及字符串的截取、查找、插入和删除
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main() {
string s;
cin >> s;
int posE = s.find('E');
string n = s.substr(0, posE);
string e = s.substr(posE + 1);
if (n[0] == '-')
cout << '-';
n.erase(0, 1);
int ei = stoi(e);
int posDot = n.find('.');
if (ei < 0) {
n.erase(posDot, 1);
int beg0 = abs(ei); // 要在字符串前插入的0的个数
string s0(beg0, '0');
n.insert(0, s0);
n.insert(1, "."); // 插入小数点,注意只能插入字符串
}
else if (ei > 0) {
int end0 = ei - (n.size() - 1 - posDot); // 要在字符串末尾插入的0的个数
if (end0 > 0) {
string s0(end0, '0');
n.insert(n.size(), s0); // 在末尾插入0,注意是 n.size() ,不是 n.size() - 1
}
n.erase(posDot, 1);
if (posDot + ei != n.size()) {
n.insert(posDot + ei, "."); // 最后一位不是小数点就插入小数点
}
}
cout << n;
return 0;
}