比较引用字符串和字符串

c++ comparing a reference string to a string

本文关键字:字符串 引用 比较      更新时间:2023-10-16

我有一个方法,它有一个参数是一个字符串的引用,在方法中我想比较这个引用的字符串到另一个字符串,这个字符串是一个名为事务的对象的一部分,有一个事务数组。两个原始字符串都是std::字符串,我尝试使用==运算符,但这似乎不返回真,即使两个字符串是相同的。可能是在比较字符串的地址

这是我现在拥有的:

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 studio调试控制台,我猜这是一件好事,我实际上并不负责为股票经纪人编写代码,哈哈

使用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) {
...