如果這個問題已經被問及我的谷歌技能失敗了,我很抱歉。防止C++文件中的行重複
我正在與ncurses的一個簡單的控制檯遊戲,我想包括額外的絕殺,獎金材料,等這個鎖定壓縮文件夾...
我可以寫代碼的文件就好了但無論什麼原因,當我重新訪問將文本寫入文件的地方時,它會重演。我試過尋找一個解決方案,並沒有找到一個,所以這是我的最後手段。
基本信息:我使用Windows,但我希望程序是跨平臺的。如果需要更多信息,我很樂意提供。
編輯1:
std::ifstream checkFile("Unlocks.txt");
if(checkFile.is_open())
{
std::string data;
std::string fernox = "Unlock for Fernox Piraxis File";
while(std::getline(checkFile, data))
{
if(data.find(fernox) == std::string::npos)
{
std::ofstream myFile("Unlocks.txt", std::ios::app);
myFile << "Unlock for Fernox Piraxis File: ZWdOFMRmeE\n";
myFile.close();
break;
}
}
checkFile.close();
}
編輯2: 我並不想覆蓋其他文件的任何部分。這段代碼「假設」用於檢查上面的行是否已經寫入文件中,如果不是,寫入它。如果文件中已存在該行,我不希望它再次寫入相同的行(並且我正在使用ios::app
,以便它不會覆蓋文件中已有的任何內容。)
在此先感謝您的幫助。
編輯3: 現在的工作感謝twalberg
終極密碼:
std::ifstream checkFile ("Unlocks.txt");
if(checkFile.is_open())
{
bool found = false;
std::string data;
std::string fernox ("Unlock for Fernox Piraxis File");
while(std::getline(checkFile, data))
{
if(data.find(fernox) != std::string::npos)
{
found = true;
break;
}
}
if(!found)
{
std::ofstream myFile("Unlocks.txt", std::ios::app);
myFile << "Unlock for Fernox Piraxis File: ZWdOFMRmeE\n";
myFile.close();
}
checkFile.close();
}
你的循環讀取checkFile'的'第一線,然後將其關閉不管在'data'字符串中搜索'fernox'的結果。我無法想象這是故意的,因爲它使得代碼循環變得毫無意義。我不知道這是否與你描述的問題有關(我不太明白),但我想我應該指出。 –
你應該考慮從if和else塊中刪除「CheckFile.close()」。因爲它無論如何都會被執行,只有一個外部就足夠了) –
好吧,我從if和else語句中刪除了'checkFile.close()',但它沒有幫助,問題在於它是一個幫助菜單,如果你閱讀故事,可以訪問該角色的生物。如果你返回並再次閱讀故事部分,它會重複生物的代碼。希望能夠清除一點點。 – Piraxis