将字符串转换为double和int.如何?

Rob*_*isk 4 c++

我在将字符串转换为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)

显然,这就是它的完成方式.但是,当然,它不起作用.我需要另一个参数.我相信一个指针?但是我在这一点上已经失去了我想要做的事情.它需要一个存储价值的地方吗?或者是什么?

我还需要将这个字符串转换成一个整数,我还没有开始研究如何做,但是一旦我发现并且如果我有错误,我会编辑它并在这里发布它们.

Set*_*gie 9

有没有你不使用的理由std::stodstd::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.