gpt4 book ai didi

c++ - 需要比较字符串的某些元素

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:13 24 4
gpt4 key购买 nike

一直在研究这个程序,它需要使用一个函数来比较用户输入的字符串,并让用户有机会将他/她不知道的字符从输入中删除,用 * 替换它们.输入表示具有 6 个字符的汽车牌照(例如 ABC123),并且允许用户省略任何这些字符(例如 AB** 23 或 ** C12* 等)。因此该函数需要返回与正确位置的字符匹配的所有对象,但如果 A 位于正确位置但其他任何字符不正确,则它无法返回。但是,用户只允许输入 A* * * * *,例如,该函数应返回第一个位置为 A 的所有对象。我所做的是使用一个函数从输入字符串中删除所有星号,然后创建子字符串并将它们作为 vector 发送到该函数。

    string removeAsterisk(string &rStr)// Function to remove asterisks from the string, if any.
{
stringstream strStream;
string delimiters = "*";
size_t current;
size_t next = -1;
do
{
current = next + 1;
next = rStr.find_first_of( delimiters, current );
strStream << rStr.substr( current, next - current ) << " ";
}
while (next != string::npos);

return strStream.str();

     int main()
{
string newLicensePlateIn;
newLicensePlateIn = removeAsterisk(licensePlateIn);
string buf; // Have a buffer string
stringstream ss(newLicensePlateIn); // Insert the string into a stream

vector<string> tokens; // Create vector to hold our words

while (ss >> buf)
tokens.push_back(buf);
myRegister.showAllLicense(tokens);
}

接收 vector 的类函数目前看起来像这样:

    void VehicleRegister::showAllLicense(vector<string>& tokens)//NOT FUNCTIONAL
{
cout << "\nShowing all matching vehicles: " << endl;
for (int i = 0; i < nrOfVehicles; i++)
{

if(tokens[i].compare(vehicles[i]->getLicensePlate()) == 0)
{
cout << vehicles[i]->toString() << endl;
}
}
}

如果有人了解我正在尝试做的事情并且可能有一些想法,请随时回复,我将不胜感激任何建议。感谢您阅读本文/A。

最佳答案

只需遍历字符,一次比较一个。如果任一字符是星号,则认为匹配,否则比较它们是否相等。例如:

bool LicensePlateMatch(std::string const & lhs, std::string const & rhs)
{
assert(lhs.size() == 6);
assert(rhs.size() == 6);
for (int i=0; i<6; ++i)
{
if (lhs[i] == '*' || rhs[i] == '*')
continue;
if (lhs[i] != rhs[i])
return false;
}
return true;
}

实际上,您不必将其限制为 6 个字符。您可能需要允许使用梳妆台。在这种情况下,只需确保两个字符串的长度相同,然后遍历所有字符位置,而不是在其中硬编码 6。

关于c++ - 需要比较字符串的某些元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13671952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com