我有一个方法,它有一个参数,它是一个字符串的引用,在我想要将这个引用的字符串与另一个字符串进行比较的方法中,这个字符串是一个名为transaction的对象的一部分,有一个事务数组。原始字符串都是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;
}
}
事务也是指向事务数组开始的指针,包含这会产生任何不同。 编辑: 感谢所有回复,结果我输入了错误的名称到了股票代码......这个方法确实有效,就像使用john.pavan发布的.compare答案一样。不知道我之前没有注意到这一点,因为我正在使用视觉工作室调试控制台,猜测它是一件好事,我实际上并不负责为股票经纪人编写代码而哈哈
答案 0 :(得分: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) {
...