C ++试图返回一个双精度数组的字符串(有点)

时间:2013-11-27 23:02:49

标签: c++ arrays string double

我的代码是:

double customer:: getAccounts()
    {
        for (int i=0;i<5;i++)
        {               
            if(Accounts[i].getBalance() != 0)
            {
            double x = Accounts[i].getBalance();
            return x;
            }
        }   
    }

目前您可以看到它只返回第一个帐户余额,然后在该返回点结束。但是,我想在一种方法中返回每个帐户余额以适合该程序。这可能是一个字符串,但我不知道我会怎么做。

我试过了:

string customer:: getAccounts()
    {
        string output;
        std::ostringstream s;
        for (int i=0;i<5;i++)
        {               
            if(Accounts[i].getBalance() != 0)
            {
            double x = Accounts[i].getBalance();    
            s << x;
            output += s.str;
            }
        }   
    return output;
}

但我得到以下内容:

错误2错误C2679:二进制'+ =':找不到运算符,它采用'overloaded-function'类型的右手操作数(或者没有可接受的转换)

还有:

错误1错误C3867:'std :: basic_ostringstream&lt; _Elem,_Traits,_ Alloc&gt; :: str':函数调用缺少参数列表;使用'&amp; std :: basic_ostringstream&lt; _Elem,_Traits,_Alloc&gt; :: str'创建指向成员的指针

任何人都会对我应该做的事情发光吗? :■

3 个答案:

答案 0 :(得分:1)

使用std::vectorstd::vector<double>)作为返回类型。

答案 1 :(得分:1)

调用该函数,而不仅仅是引用它。

更改

output += s.str;

output += s.str();

当然,更好的解决方案是使用vector<double>类型,以便您可以轻松地迭代值。实际上,字符串值之间甚至没有分隔符,因此您无法分辨一个值的结束位置和另一个值的开始。

答案 2 :(得分:0)

我认为你的方法有点奇怪,但这是如何正确地做到的。

string customer::getAccounts()
{
    std::ostringstream s;
    for (int i=0;i<5;i++)
    {               
        if(Accounts[i].getBalance() != 0)
        {
            double x = Accounts[i].getBalance();    
            s << x;
        }
    }   
    return s.str();
}