我無法讀取文件,然後將列表打印到另一個文件,逐行列出每個文件的出現次數。讀取文件但打印不在讀取文件中的整數
我的工作原理,但它打印的數字:1,2,3,4,和5到輸出文件,該文件是不是在讀取的文件
的結構:
struct entry {
string word;
string word_uppercase;
int number_occurences;
};
//for array
entry myEntryArray[MAX_WORDS];
int addNewEntryHere=0; //next empty slot
我的主要電話extractTokensFromLine閱讀並放入數組:
void extractTokensFromLine(std::string &myString) {
const char CHAR_TO_SEARCH_FOR = ' ';
stringstream ss(myString);
string tempToken;
//Extracts characters from is and stores them into str until the delimitation character delim is found
while (getline(ss, tempToken, CHAR_TO_SEARCH_FOR)) {
processTokenArray(tempToken);
}
}
它通過字經過的每一行字放在一個陣列:
void processTokenArray(string &token) {
//temp uppercase for compare
string strUpper = token;
toUpper(strUpper);
//see if its already there
for (int i = 0; i < addNewEntryHere; ++i) {
if (strUpper == myEntryArray[i].word_uppercase) {
//yep increment count
myEntryArray[i].number_occurences++;
return;
}
}
//nope add it
myEntryArray[addNewEntryHere].word = token;
myEntryArray[addNewEntryHere].number_occurences = 1;
myEntryArray[addNewEntryHere].word_uppercase = strUpper;
//where next place to add is
addNewEntryHere++;
}
它然後寫入陣列到文件(每個字和它出現的次數):
bool writeArraytoFile(const std::string &OUTPUTFILENAME) {
fstream outfile;
if (!openFile(outfile,OUTPUTFILENAME,ios_base::out))
return false;
int var;
for (var = 0; var < addNewEntryHere; ++var) {
string word = myEntryArray[var].word;
if(word != " " && word != "")
outfile<<myEntryArray[var].word << " " <<IntToString(myEntryArray[var].number_occurences)<<std::endl;
}
closeFile(outfile);
return true;
}
讀入文件是TestData.txt:
我覺得我應該想一點黃油
的,如果它不
太麻煩了一些麪包和。當你在廚房裏爲我和我的男人在這裏的時候,
我的輸出文件(使用以下方法排序):
void sortVector(sortOrder so = NUMBER_OCCURRENCES) {
bool shouldSwap = false;
for (int var = 0; var < addNewEntryHereV; ++var) {
for (int var1 = var+1; var1 < addNewEntryHereV; ++var1) {
switch (so) {
case ASCENDING:
shouldSwap =!compareAscendingV(myEntryVector, var, var1);
break;
//TODO handle the following cases appropriately
case DESCENDING:
shouldSwap =!compareDescendingV(myEntryVector, var, var1);
break;
case NUMBER_OCCURRENCES:
shouldSwap =!sortbyOccurrenceV(myEntryVector, var, var1);
break;
default:
break;
}
if (shouldSwap){
std::string tmp = myEntryVector._V.at(var);
myEntryVector._V.at(var) = myEntryVector._V.at(var1);
myEntryVector._V.at(var1) = tmp;
}
}
}
}
實際輸出:
而3
I 2
這裏 。 1
人1
我1
我1
1個
expressos 1
支撐杆1
廚房1
中1
是1
你1
而1
好。1
爲1
吐司1
一些1個
麻煩1
多1
太1
不是1
其1
如果1
黃油1
位1
像1
應在1
認爲1
任何種類的建議,將不勝感激,謝謝
什麼實際問題?輸出實際上是什麼樣的?輸出應該是什麼樣子? –
發佈的代碼似乎沒有任何錯誤。你沒有發佈很多代碼。所以我會發布完整的程序,那麼你會很快得到答案。 – john
實際的問題是輸出文件給我的數字在Read文件中沒有數字。它應該看起來像是出現次數的單詞列表 –