從標題判斷,我有點用相當複雜的方式完成了我的程序。但!我不妨問問xD在字符串中查找字符在矢量中
這是一個簡單程序我在回答加速C++的問題3-3,這是一本令人敬畏的書,我認爲。
我創建了一個向量:
vector<string> countEm;
接受所有有效的字符串。因此,我有一個包含字符串元素的向量。
接下來,我創建了一個功能
int toLowerWords(vector<string> &vec)
{
for(int loop = 0; loop < vec.size(); loop++)
transform(vec[loop].begin(), vec[loop].end(),
vec[loop].begin(), ::tolower);
是將輸入轉化爲更容易計數全部小寫。到現在爲止還挺好。
我創建了第三個也是最後一個函數,實際上是count這個詞,那就是我被卡住的地方。
int counter(vector<string> &vec)
{
for(int loop = 0; loop < vec.size(); loop++)
for(int secLoop = 0; secLoop < vec[loop].size(); secLoop++)
{
if(vec[loop][secLoop] == ' ')
這看起來很荒謬。使用一個二維數組來調用矢量的字符,直到找到一個空格。荒謬。我不相信這是一個優雅或甚至可行的解決方案。如果這是一個可行的解決方案,那麼我會從空間回溯,並將我在單獨的矢量中找到的所有字符複製到那些。
我的問題是。我怎樣才能將一個字符串矢量分解成單獨的單詞,以便我可以實際計數它們?我想過使用strchr,但它沒有給我任何epiphanies。通過尼爾
解決方案:
stringstream ss(input);
while(ss >> buffer)
countEm.push_back(buffer);
,從我可以很容易地算(經常性)字樣。
然後我通過Wilhelm做了一個解決方案,我會重新編寫它,因爲我不小心刪除了這個解決方案!愚蠢的我,但我會張貼,一旦我有它再次寫^^
我想感謝你們所有的投入!解決方案已經工作,我成了一個更好的程序員。如果我可以投票你的東西,那麼我會:P一旦我可以,我會的!並再次感謝!
嘿!我從未使用istringstream,所以我不知道你在這裏工作的是什麼樣的魔法,但是如果我可以用這個解決方案解決問題,我會告訴你^^所以,謝謝!如上所述,一旦獲得許可,我會選擇積極的態度。 – IAE 2010-04-19 15:27:29