하나의 변수를 기반으로 텍스트 파일의 특정 줄 삭제

큐브

현재 4 개의 다른 변수가 있으며 다음 형식으로 저장됩니다.

아티스트 : 제목 : 연도 : 카테고리

현재 파일을 열고 해당 변수에 저장 중이며 getline을 사용해 보았지만 해당 변수를 모두 삭제할 수 없습니다.

void deletesong(){

    string oldfile;
    ifstream openFile;
    ofstream ofile;
    string line;
    string songnme;
    string oartist[NUM], otitle[NUM], oyear[NUM], ocategory[NUM];
    int counter;
    bool finddvd;
    //User enters filename, add .txt to make sure its saved as filename.txt
    do{
    cout  << "Please enter the name of the file you would like to delete from: ";
    cin >> oldfile;
    oldfile +=  ".txt";
    openFile.open(oldfile.c_str());
        if(openFile.fail()){
            cerr << "Check spelling of file name.\n";
            error = true;
        }
    //Storing text from file into arrays
    }while(error == true);

    while(getline( openFile, oartist[counter], ':') && getline( openFile, otitle[counter], ':') &&
        getline( openFile, oyear[counter], ':') && getline( openFile, ocategory[counter])){
    counter++;
    }
    cout << "Enter the name of the song you would like to delete: ";
    cin >> songname;

이것은 파일 이름을 검색하고 파일을 열고 모든 것을 배열에 저장하는 데 사용하는 코드입니다.

내 코드가 필요한 것은 예를 들어 누군가 Ruby의 노래 이름을 삭제하려는 경우 텍스트 파일에 다음과 같이 표시됩니다.

xxxx : 루비 : xxxx : xxxx

줄의 모든 정보를 하나의 레코드로 삭제하려면 프로그램이 필요합니다.

바르 막 셰미 라니

std::vector<std::string>.NET과 같은 문자열 배열을 선언 하는 대신 사용하고 싶습니다 string oartist[NUM].

또한 데이터를 하나의 구조로 구성 할 수 있습니다. 예를 들면 :

struct record
{
    std::string artist, title, year, category;
};

std::vector::push_back데이터를 추가하는 데 사용 합니다. 그런 다음 벡터 중간에있는 레코드를 제거하거나 벡터에 새 데이터를 추가 할 수 있습니다. 마지막으로 데이터를 저장하십시오. 예를 들면 :

std::fstream openFile(filename, std::ios::in);
if (openFile.fail()) return;

record rec;
std::vector<record> songs;

while ( getline(openFile, rec.artist, ':') && 
    getline(openFile, rec.title, ':') && 
    getline(openFile, rec.year, ':') && 
    getline(openFile, rec.category) )
    songs.push_back(rec);

std::string title_remove = "title";

for (size_t i = 0; i < songs.size(); i++)
{
    if (songs[i].title == title_remove)
    {
        songs.erase(songs.begin() + i);
        break;
    }
}

openFile.close();

openFile.open(filename, std::ios::out);
for (size_t i = 0; i < songs.size(); i++)
    openFile << songs[i].artist << ":" 
    << songs[i].title << ":" 
    << songs[i].year << ":" 
    << songs[i].category << "\n";

참고이 예제는 사용하는 fstream사용하는 대신 ofstream. 읽기를 위해 파일을 연 다음 파일을 닫고 ios::out쓰기 플래그를 사용 하여 다시 열어야하기 때문 입니다.


고정 된 크기의 배열로이 작업을 수행하려면 편집하십시오.

void deletedvd() 
{
    string oldfile;
    ifstream openFile;
    string line, dvdnme;
    ofstream createFile;
    string oartist[NUM], otitle[NUM], oyear[NUM], ocategory[NUM];
    string nartist[NUM], ntitle[NUM], nyear[NUM], ncategory[NUM];

    //**********
    //initialize these values before using them
    //**********
    int counter = 0;
    int j = 0;
    bool error = false;
    bool searc = false;

    //User enters filename, add .txt to make sure its saved as filename.txt
    do {
        cout << "Please enter the name of the file you would like to delete from: ";
        cin >> oldfile;
        oldfile += ".txt";
        openFile.open(oldfile);
        if (openFile.fail()) {
            cerr << "Check spelling of file name.\n";
            error = true;
        }
    } while (error == true);
    cout << "Enter the name of the dvd you would like to delete: ";
    cin >> dvdnme;
    while (getline(openFile, oartist[counter], ':') && getline(openFile, otitle[counter], ':') &&
        getline(openFile, oyear[counter], ':') && getline(openFile, ocategory[counter])) {
        counter++;
    }

    //Loop for finding the deleted word, and overwriting it by shifting every to right of it left by 1 element
    for (int i = 0; i < counter; i++)
    {
        if (dvdnme == otitle[i])
        {
            //**** skip this item
            searc = true;
            continue;
        }
        ntitle[j] = otitle[i];
        nartist[j] = oartist[i];
        nyear[j] = oyear[i];
        ncategory[j] = ocategory[i];
        j++;
    }

    if (searc)
    {
        //**********
        //close this file handle before opening a new handle
        //**********
        openFile.close();

        createFile.open(oldfile);//**** doesn't need the .c_str() with other std function
        for (int i = 0; i < counter - 1; i++) {
            createFile << ntitle[i] << ":" << nartist[i] << ":" << nyear[i]
                << ":" << ncategory[i] << endl;
        }
        createFile.close();
    }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

RUBY의 키워드를 기반으로 텍스트 파일의 한 줄 삭제

분류에서Dev

줄 번호를 기준으로 텍스트 파일의 특정 줄을 삭제 (제거)하는 방법은 무엇입니까?

분류에서Dev

|| Python의 텍스트 파일에있는 텍스트를 기반으로 특정 줄을 인쇄합니다.

분류에서Dev

Python을 사용하여 텍스트 파일에서 특정 줄 수 삭제

분류에서Dev

텍스트 파일에서 특정 문자를 포함하는 줄 삭제

분류에서Dev

C ++에서 텍스트 파일의 특정 줄을 삭제하는 방법

분류에서Dev

프로그래밍 방식으로 텍스트 파일의 특정 줄 수정

분류에서Dev

텍스트 파일에 대한 작업을 동시에 수행 한 후 텍스트 파일의 특정 줄을 삭제하는 방법

분류에서Dev

Ruby의 텍스트 파일에서 특정 단어가 포함 된 줄 삭제

분류에서Dev

Notepad ++ : 다음 줄의 특정 텍스트 앞 줄 삭제

분류에서Dev

특정 줄 번호의 텍스트를 파일 이름으로 교체

분류에서Dev

텍스트 파일의 특정 줄에서 특정 텍스트 변경

분류에서Dev

기존 파일에서 특정 줄 수를 제거하고 새 텍스트 파일을 만드는 방법

분류에서Dev

이전 명령의 변수를 기반으로 awk 또는 sed를 사용하여 파일에서 줄 삭제

분류에서Dev

텍스트 파일의 특정 줄 수정

분류에서Dev

UNIX를 사용하여 텍스트 파일의 특정 행 삭제

분류에서Dev

텍스트 파일의 특정 줄 일치 및 바꾸기

분류에서Dev

텍스트 파일의 여러 정규식과 일치하는 텍스트 파일에서 줄 삭제

분류에서Dev

사용자 입력 Python 3을 사용하여 텍스트 파일의 특정 줄을 삭제하는 방법

분류에서Dev

텍스트 파일에서 두 개의 특정 줄을 읽고 그 일부를 변수로 사용하는 Bash 스크립트

분류에서Dev

각 줄의 특정 위치를 기준으로 텍스트 정렬

분류에서Dev

sed를 사용하여 텍스트 파일의 일부 및 다음 줄 삭제

분류에서Dev

첫 번째 파일의 특정 열과 부분적으로 일치 할 수있는 다른 파일의 패턴을 기반으로 파일에서 줄 제거

분류에서Dev

.NET의 텍스트 파일에서 특정 줄의 줄 수 결정

분류에서Dev

텍스트 파일의 특정 줄 번호부터 쓰기

분류에서Dev

텍스트 파일의 특정 줄 번호부터 쓰기

분류에서Dev

텍스트 파일의 특정 줄에서 숫자 읽기

분류에서Dev

VBScript에서 텍스트 파일의 특정 줄 읽기

분류에서Dev

python-텍스트 파일의 특정 줄에 쓰기

Related 관련 기사

  1. 1

    RUBY의 키워드를 기반으로 텍스트 파일의 한 줄 삭제

  2. 2

    줄 번호를 기준으로 텍스트 파일의 특정 줄을 삭제 (제거)하는 방법은 무엇입니까?

  3. 3

    || Python의 텍스트 파일에있는 텍스트를 기반으로 특정 줄을 인쇄합니다.

  4. 4

    Python을 사용하여 텍스트 파일에서 특정 줄 수 삭제

  5. 5

    텍스트 파일에서 특정 문자를 포함하는 줄 삭제

  6. 6

    C ++에서 텍스트 파일의 특정 줄을 삭제하는 방법

  7. 7

    프로그래밍 방식으로 텍스트 파일의 특정 줄 수정

  8. 8

    텍스트 파일에 대한 작업을 동시에 수행 한 후 텍스트 파일의 특정 줄을 삭제하는 방법

  9. 9

    Ruby의 텍스트 파일에서 특정 단어가 포함 된 줄 삭제

  10. 10

    Notepad ++ : 다음 줄의 특정 텍스트 앞 줄 삭제

  11. 11

    특정 줄 번호의 텍스트를 파일 이름으로 교체

  12. 12

    텍스트 파일의 특정 줄에서 특정 텍스트 변경

  13. 13

    기존 파일에서 특정 줄 수를 제거하고 새 텍스트 파일을 만드는 방법

  14. 14

    이전 명령의 변수를 기반으로 awk 또는 sed를 사용하여 파일에서 줄 삭제

  15. 15

    텍스트 파일의 특정 줄 수정

  16. 16

    UNIX를 사용하여 텍스트 파일의 특정 행 삭제

  17. 17

    텍스트 파일의 특정 줄 일치 및 바꾸기

  18. 18

    텍스트 파일의 여러 정규식과 일치하는 텍스트 파일에서 줄 삭제

  19. 19

    사용자 입력 Python 3을 사용하여 텍스트 파일의 특정 줄을 삭제하는 방법

  20. 20

    텍스트 파일에서 두 개의 특정 줄을 읽고 그 일부를 변수로 사용하는 Bash 스크립트

  21. 21

    각 줄의 특정 위치를 기준으로 텍스트 정렬

  22. 22

    sed를 사용하여 텍스트 파일의 일부 및 다음 줄 삭제

  23. 23

    첫 번째 파일의 특정 열과 부분적으로 일치 할 수있는 다른 파일의 패턴을 기반으로 파일에서 줄 제거

  24. 24

    .NET의 텍스트 파일에서 특정 줄의 줄 수 결정

  25. 25

    텍스트 파일의 특정 줄 번호부터 쓰기

  26. 26

    텍스트 파일의 특정 줄 번호부터 쓰기

  27. 27

    텍스트 파일의 특정 줄에서 숫자 읽기

  28. 28

    VBScript에서 텍스트 파일의 특정 줄 읽기

  29. 29

    python-텍스트 파일의 특정 줄에 쓰기

뜨겁다태그

보관