1

我有一个方法,它的参数是对字符串的引用,在该方法中,我想将此引用的字符串与另一个字符串进行比较,该字符串是称为事务的对象的一部分,有一个事务数组。两个原始字符串都是 std::strings,我尝试使用 == 运算符,但即使两个字符串相同,这似乎也不会返回 true。也许它比较字符串的地址。

这是我现在拥有的:

int Analyser::numSharesBoughtOf(string& stockSymbol)
{
    // Your code
    int Total=0;

    for (int tranNum(0); tranNum<numOfTranactions; tranNum++)
    {

        if (stockSymbol == Transactions[tranNum].stockSymbol)
        {
            Total = Total + Transactions[tranNum].numShares;
        }
    }

    if (Total > 0)
    {
        return Total;
    }
    else
    {
        return 0;
    }
}

Transactions 也是一个指向事务数组开始的指针,封装这有什么不同。编辑:感谢您的所有回复,事实证明我在股票代码中输入了错误的名称......此方法与使用 john.pavan 发布的 .compare 答案一样有效。不知道我以前是怎么没有注意到这一点的,因为我使用的是 Visual Studios 调试控制台,我猜这是一件好事,因为我实际上并不负责为股票经纪人编写代码,哈哈

4

1 回答 1

0

只需使用 std::string::compare。请注意,它像 strcmp 一样工作,0 表示它们相等。

...
if (stockSymbol.compare(Transactions[tranNum].stockSymbol) == 0) {
...

根据评论,这对您没有帮助。我能想到的唯一另一件事是您正在比较不同大小写的字符串。因此,将两者转换为较低,然后进行比较。

std::string copy1(stockSymbol);
std::string copy2(Transactions[tranNum].stockSymbol));
std::transform(copy1.begin(), copy1.end(), copy1.begin(), ::tolower);
std::transform(copy2.begin(), copy2.end(), copy1.begin(), ::tolower);
if (copy1 == copy2) {
...
于 2013-03-19T03:09:33.607 回答