【问题标题】:Add two string in c++ [duplicate]在c ++中添加两个字符串[重复]
【发布时间】:2012-07-27 08:45:27
【问题描述】:

可能重复:
How to convert a number to string and vice versa in C++

在 csharp 中

string s1="12345"
string s2="54321"

public double (string s1,string s2)
{
  convert.todouble(s1) +convert.to-double(s2)
}

由于没有转换类,我在 C++ 中的表现如何

【问题讨论】:

  • @valdo:除了 C++ 也是一种高级编程语言。

标签: c++ visual-c++


【解决方案1】:

boost::lexical_cast 为例。

double func (const std::string& s1, const std::string& s2)
{
    return boost::lexical_cast<double>(s1) + boost::lexical_cast<double>(s2);
}

或使用std::stringstreamstrtod

【讨论】:

    【解决方案2】:
    double doubleFromString(const std::string &str)
    {
        std::istringstream is(str);
        double res;
        is >> res;
        return res;
    }
    

    【讨论】:

      【解决方案3】:

      c++11 包含std::stod,它将string 转换为双精度。否则,您可以使用stringstreamsboost::lexical_cast&lt;double&gt;。因此,您的选择是:

      return std::stod(s1) + std::stod(s2); //(c++11 only), or:
      return boost::lexical_cast<double>(s1) + boost::lexical_cast<double>(s2); //or:
      std::stringstream ss1(s1);
      std::stringstream ss2(s2);
      double a, b;
      ss1>> a;
      ss2>>b;
      return a+b;
      

      当然你也可以走c路线并使用sprintf

      【讨论】:

        【解决方案4】:

        如果您的编译器支持 C++11,则有一个函数 stod 可以将字符串转换为双精度。

        你的功能只是

        return std::stod(s1) + std::stod(s2);
        

        【讨论】:

        • 如果函数返回类型是int???所以它是一样的???
        【解决方案5】:

        除了其他答案,最简单的方法(至少在 C++11 中)是:

        double add(const std::string &s1, const std::string &s2)
        {
            return std::stod(s1) + std::stod(s2);
        }
        

        【讨论】:

        • 如果函数返回类型是int???所以它是一样的???
        • 如果字符串包含int,那么还有std::stoiand a set of others
        【解决方案6】:

        我会使用字符串流,因为你不需要支持 c++11。

        cplusplus.com的这篇文章回答了你的问题:http://www.cplusplus.com/reference/iostream/istringstream/istringstream/

        但这是我会做的:

        #include <string>
        #include <sstream>
        
        double function (std::string s1, std::string s2)
        {
            std::istringstream iss (std::string(s1 + " " + s2), std::istringstream::in);
            double a, b;
            iss >> a;
            iss >> b;
        
            return a + b;
        }
        

        【讨论】:

        • 很好地使用字符串连接来避免昂贵的 istringstream 构造函数。
        • 我认为这是一个顽皮的黑客!谢谢:)
        猜你喜欢
        • 1970-01-01
        • 2012-08-28
        • 2015-10-18
        • 2014-03-18
        • 2021-06-20
        • 1970-01-01
        • 2015-12-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多