Пример:
Код: Выделить всё
"Justin","Justin1", "Justin2", "Justin3"Возвращает «Джастин4», поскольку Джастин и Джастин имеют номера 1 до 3 уже заняты.
Я уже писал этот код на Java, а теперь для практики пишу его на C++. Однако у меня есть несколько проблем:
- Как сравнить две строки? Я пробовал strcmp и некоторые другие, но всегда получаю сообщение об ошибке: невозможно преобразовать std::string в const char* для аргумента 2.
- Как объединить целое число и строку? В Java это было так же просто, как использовать оператор +.
- В моей основной функции написано, что функции сопоставления нет. вызовите Username::NewMember(std::string, std::string). почему он не распознает newMember в основном?
Код: Выделить всё
#include #include 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 Подробнее здесь: [url]https://stackoverflow.com/questions/18297024/c-implementation-of-string-matching-algorithm[/url]