2013-10-18 61 views
0

我有下面的代碼,它掃描一個文本文件並獲取多行,我試圖實現一些輸入驗證,因此如果用戶輸入錯誤的文件,它會提示用戶並關閉程序而不是崩潰。我目前添加了一些東西,但我試圖執行一些檢查文件是否按字母順序排序...檢查一個文本文件是否按字母順序排列

我目前試過sort(word.begin(), word.end()); ,但這種排序的話...我不實際上我想排序的話我只是想檢查他們是否按字母順序排列,如果沒有,關閉程序...我怎麼能做到這一點?

文件的佈局

word

definition

type

blankline

重複...

例如

a 
the letter a 
n 

b 
the letter b 
n 

c 
the letter c 
n 

...end 
+1

請不要發佈您的整個代碼,只有相關的部分。另外,請給我們一些關於你的輸入文件的樣子的信息。 – codeling

+0

一次只讀一個單詞。檢查當前單詞是否按字母順序高於前一個單詞。如果失敗,則中止。 – Barmar

+0

@nyarlathotep更新 – user2881555

回答

3

如果你只是想檢查的話按字母順序排列你爲什麼不檢查第一和第二串?如果他們是有序的,你去你的第二和第三...等等,直到他們中的一個沒有命令或文件結束。如果你做到了這一步,就意味着它們是訂購的。

string word, definition, type, blank, aux; 

while (getline(dictionaryFile, word) && 
     getline(dictionaryFile, definition) && 
     getline(dictionaryFile, type) && 
     getline(dictionaryFile, blank)) { 

if (strcmp(aux.c_str(), word.c_str()) > 0) return; 
    else aux=word; 
... 
... 
... 
} 
+0

既然他們已經是字符串,他們可以比較直接沒有'strcmp'。 –

+0

這段代碼給了我一個錯誤,類型爲「bool」的參數與類型爲「const char *」的參數不兼容「 – user2881555

+0

」抱歉,我在「> 0」之前錯過了一個閉括號, – Cretzu

相關問題