이 질문에 이미 물었고 Google 기술이 실패한 경우 사전에 사과드립니다.C++ 파일의 줄 반복 방지
내가 잘 파일에 코드를 작성하지만 대한 수 있습니다 ... 나는 ncurses를 간단한 콘솔 게임을 만들고있어 나는 등 추가 지식, 보너스 자료,이 잠금 지퍼 폴더를 포함하고 싶었다 텍스트를 파일에 쓴 장소를 다시 방문 할 때 어떤 이유가 있더라도 반복됩니다. 나는 해결책을 찾고자 노력했지만, 이것이 최후의 수단이 될 수 없다.
기본 정보 : 저는 창을 사용하지만 프로그램을 크로스 플랫폼으로 만들고 싶습니다. 더 많은 정보가 필요하다면 기꺼이 제공 할 것입니다.
편집 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
을 사용하고있다.)
도움을 위해 미리 감사드립니다. .
EDIT 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