我實現了一個用戶名數據庫中的字符串匹配算法。我的方法需要一個現有的用戶名數據庫和一個用戶想要的新用戶名,並檢查用戶名是否被使用。如果採取的方法應該返回用戶名與數據庫中沒有采取的數字。C++實現字符串匹配的ALG
實施例:
「賈斯汀」, 「Justin1」, 「Justin2」, 「Justin3」
輸入 「賈斯汀」
返回: 「Justin4」,因爲賈斯汀和Justin用數字1通過3已經被採取。
我已經用Java編寫的代碼,現在我寫它在C++中的實踐。我有一些問題,但:
你如何比較兩個字符串?我已經嘗試過strcmp和其他幾個,但我總是得到錯誤信息:無法將std :: string轉換爲const char *作爲參數2.
如何連接一個int和一個字符串?在java中它就像使用+運算符一樣簡單。
在我的主要功能,它說沒有匹配的函數調用用戶名:NewMember(的std :: string,的std :: string)。爲什麼它不認識mainMember?
#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; } }
閱讀'sizeof'做什麼。並且沒有理由在'main'中使用指針。 – chris
當你在這裏,閱讀['std :: string'](http://en.cppreference.com/w/cpp/string/basic_string)可以爲你做* *(回答你的「如何比較字符串「問題),並且當你不需要修改內容或製作臨時副本時,通過學習const引用參數的樂趣讓你的運行時內存管理器休息一下。 – WhozCraig
在java-translated-to-C++中有足夠的錯誤,你需要明白它們到底有多不同。 [看到它住在這裏](http://ideone.com/sqZyiA)。 – WhozCraig