C++ C+中的指数数转换+;,MFC

C++ C+中的指数数转换+;,MFC,c++,visual-c++,mfc,cstring,C++,Visual C++,Mfc,Cstring,我是MFC的新手,现在我想把指数“4.246E+3”转换成4246 输入是字符串,输出是int 请让我知道如果我们有任何方式(API)在MFC、C++、中得到它。 谢谢 MAP您可以使用标准库函数,该函数允许str使用科学符号 int stoi (const string& str, size_t* idx = 0, int base = 10); 如果您提供idx并返回nullptr,则str是一个纯数字,如果不是,则返回str中第一个无效字符的地址 P>最好使用标准的C++库函

我是MFC的新手,现在我想把指数“4.246E+3”转换成4246

输入是字符串,输出是int

请让我知道如果我们有任何方式(API)在MFC、C++、

中得到它。 谢谢
MAP

您可以使用标准库函数,该函数允许
str
使用科学符号

int stoi (const string&  str, size_t* idx = 0, int base = 10);
如果您提供
idx
并返回
nullptr
,则
str
是一个纯数字,如果不是,则返回
str
中第一个无效字符的地址


<> P>最好使用标准的C++库函数,而不是MFC,只要有可能,帮助将来在MFC中移植。

< P>下面的代码将很好地解决你的问题……/P>
#include<sstream>

string str = "4.246e+3";
stringstream ss;
double number;
ss<<str;
ss>>number;
#包括
字符串str=“4.246e+3”;
细流ss;
双数;
ssnumber;

MFC主要是一个Windows GUI编程库,因此我不希望它包含这样的转换函数。你可以检查C++引用,其中包含关于指数e/eTHE的信息是C++ -ISH解决方案;但是,您可以直接从字符串构造
stringstream
。(
stringstream ss(str);
)是的,我知道……我试图让我的答案更具解释性……感谢您指出……我想正确的一行是ss>>编号;而不是str>>数字;我甚至会写
std::stringstream ss(“4.246e+3”)
。不需要创建所有类型的命名临时表。这是我的代码std::string input=“4.246e+3”;std::string::size_type sz;int-output=stoi(输入,NULL,0);哦,你去掉了括号:)。我怀疑;但是你建议使用C-STDLIB函数,而C++ STL流提取器则更有用。在此上下文中,@xtofl:
std::stoi
不是C,您可以从它的第一个参数推断出来。@Bathsheba:
std::stoi
解析的格式与
std::strtol
解析的格式相同,也就是说一个简单的数字序列。这个例子在中间有一个<代码> e+< /代码>。我的错误-可能解析浮点值比解析浮点值更好:)我把它与
atoi
和朋友混淆了。