我正在为用户名数据库实现字符串匹配算法。我的方法采用现有的用户名数据库和该人想要的新用户名,并检查用户名是否被使用。如果采用该方法,则该方法应该返回带有数据库中未采用的数字的用户名。
例子:
“贾斯汀”、“贾斯汀 1”、“贾斯汀 2”、“贾斯汀 3”
输入“贾斯汀”
返回:“Justin4”,因为 Justin 和 Justin 的数字 1 到 3 已经被占用。
我已经用 Java 编写了这段代码,现在我正在用 C++ 编写它以供练习。我有几个问题:
你如何比较两个字符串?我已经尝试过 strcmp 和其他一些,但我总是收到错误消息:无法将参数 2 的 std::string 转换为 const char*。
你如何连接一个int和一个字符串?在 java 中,它就像使用 + 运算符一样简单。
在我的主函数中,它说没有匹配的函数调用 Username::NewMember(std::string, std::string)。为什么它不能识别 main 中的 newMember?
#include<iostream> #include<string> using namespace std; class Username { public: string newMember(string existingNames, string newName){ bool found = false; bool match = false; string otherName = NULL; for(int i = 0; i < sizeof(existingNames);i++){ if(strcmp(existingNames[i], newName) == 0){ found = true; break; } } if(found){ for(int x = 1; ; x++){ match = false; for(int i = 0; i < sizeof(existingNames);i++){ if(strcmp(existingNames[i],(newName + x)) == 0){ match = true; break; } } if(!match){ otherName = newName + x; break; } } return otherName; } else return newName; } int main(){ string *userNames = new string[4]; userNames[0] = "Justin"; userNames[1] = "Justin1"; userNames[2] = "Justin2"; userNames[3] = "Justin3"; cout << newMember(userNames, "Justin") << endl; delete[] userNames; return 0; } }