我想分别将基数和指数值分开。我从用户那里得到一个输入,其形式如下所示。我想单独存储基数和指数
输入3.54e45
我想把base和exponent分开。
我试着用stod把字符串转换成整数但是它给了我的形式base e + exponent而且我不知道如何将它们分开存储
int main() {
double number;
string a;
cin>>a;
try {
number=stod(a);
}
catch(exception const &e) {
}
cout<<number;
}
答案 0 :(得分:2)
我想把base和exponent分开。
然后单独解析它们,而不是在第一个位置解析double
值:
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::string a = "3.54e45"; // Read a with cin>>a; alternatively
double mantissa;
int exponent;
std::string current_part;
std::istringstream iss(a);
getline(iss, current_part, 'e'); // Split off the mantissa
mantissa = std::stod(current_part);
getline(iss, current_part); // Get the exponent
exponent = stoi(current_part);
std::cout << "Mantissa:" << mantissa << ", Exponent: " << exponent << std::endl;
}
输出
Mantissa:3.54, Exponent: 45
答案 1 :(得分:1)
如果我以正确的方式理解你,那么你只需要一个分隔符:
#include <string>
#include <iostream>
using namespace std;
int main() {
double number;
string input, base, exponent;
string delimiter = "e";
size_t pos = 0;
std::cout << "Type in a floating-point number: ";
std::cin >> input;
number = stod(input);
std::cout << "\nThe number is: " << number << std::endl;
pos = input.find(delimiter);
base = input.substr(0, pos);
exponent = input.substr(pos, input.length());
std::cout << "The base is: " << base << std::endl;
std::cout << "The exponent is: " << exponent << std::endl;
return 0;
}
如果你不想拥有&#39; e&#39;指数内的字符,只需将相应的行更改为:
exponent = input.substr(pos + delimiter.length(), input.length());
输出: