我在将字符串转换为double时遇到问题.我的字符串已经使用"string"函数声明,所以我的字符串是:
string marks = "";
Run Code Online (Sandbox Code Playgroud)
现在将它转换为双重我在互联网上找到的地方使用word.c_str(),所以我做了.我打电话给它并使用它:
doubleMARK = strtod( marks.c_str() );
Run Code Online (Sandbox Code Playgroud)
这类似于我在网络上找到的例子:
n1=strtod( t1.c_str() );
Run Code Online (Sandbox Code Playgroud)
显然,这就是它的完成方式.但是,当然,它不起作用.我需要另一个参数.我相信一个指针?但是我在这一点上已经失去了我想要做的事情.它需要一个存储价值的地方吗?或者是什么?
我还需要将这个字符串转换成一个整数,我还没有开始研究如何做,但是一旦我发现并且如果我有错误,我会编辑它并在这里发布它们.
有没有你不使用的理由std::stod和std::stoi?他们至少比脆弱的9级强大strtod.
#include <iostream>
#include <string>
int main() {
using namespace std;
string s = "-1";
double d = stod(s);
int i = stoi(s);
cout << s << " " << d << " " << i << endl;
}
Run Code Online (Sandbox Code Playgroud)
-1 -1 -1
Run Code Online (Sandbox Code Playgroud)
如果必须使用strtod,则只传递NULL第二个参数.根据cplusplus.com:
如果[第二个参数]不是空指针,则该函数还将endptr指向的值设置为指向数字后面的第一个字符.
而且不需要非NULL.