我試圖創建一個單詞排序程序,它將讀取.txt文件中的單詞,然後將它們按照從最短單詞到最長單詞的順序寫入一個新文件。所以,舉例來說,如果第一個文件包含:爲什麼這個單詞排序程序只循環一次?
大象
狗
鼠標
一旦程序執行,我希望第二個文件(最初爲空)包含:
狗
鼠標
大象
下面的代碼:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string word;
ifstream readFrom;
ofstream writeTo;
readFrom.open("C:\\Users\\owner\\Desktop\\wordlist.txt");
writeTo.open("C:\\Users\\owner\\Desktop\\newwordlist.txt");
if (readFrom && writeTo)
{
cout << "Both files opened successfully.";
for (int lettercount = 1; lettercount < 20; lettercount++)
{
while (readFrom >> word)
{
if (word.length() == lettercount)
{
cout << "Writing " << word << " to file\n";
writeTo << word << endl;
}
}
readFrom.seekg(0, ios::beg); //resets read pos to beginning of file
}
}
else
cout << "Could not open one or both of files.";
return 0;
}
對於for循環的第一次迭代中,嵌套while循環似乎工作就好了,寫正確的值到第二個文件。但是,for循環的所有下一次迭代中都會出現問題,因爲沒有其他單詞被寫入文件。這是爲什麼?
非常感謝。
你試過在調試器中運行這個嗎? –
while(readfrom >> word)loop你將位置重置爲0,所以它從頭再次開始 – fazo
這也不適合單詞,它實際上是一個基於字母數量的穩定排序。相同長度的單詞將保留其原始相對位置,導致未分類的結果。 –