-1

ここからどこへ行けばいいのかわからない。私は何かが後に行く必要があることを知っていますifstr.get(c)。呼び出されたテキストファイルにある正確な単語をコピーしますが、charsまたは?project.txtを含む単語を削除する必要があります。どんな助けでも素晴らしいでしょう。ありがとう:)<>

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main() {
    string line;
    char c;

    ifstream ifstr("project.txt");
    ofstream ofstr("past.txt");
    if(ifstr.fail()){
        cout<<"error!"<<endl;
    } // if

    ifstr.get(c);
    while(!ifstr.eof()) {
        cout<<c;
        ifstr.get(c);

        ofstr<<line<<endl;
    } // while

    cout<<endl<<"copy complete"<<endl;

    ifstr.close();
    ofstr.close();

    system ("pause");
    return 0;
} // main
4

3 に答える 3

0

タイトルの質問の疑似コード (iostream 風の条件) (山かっこも削除します):

char c;
while (read_char_succeeded(&c))
    if (c == '<')
        while (read_char_succeeded(&c) && c != '>')
            ;
    else
        write_char(c);
于 2012-08-09T18:35:37.517 に答える
0

よくわかりませんが、これがあなたが望んでいたものかどうかはわかりません。コードを見てください!

//we create a boolean value, to know if we started skipping
bool skipStarted = false;

while(ifstr.get(c))
{
    //if its a '<' and we havent started skipping jet,
    //then we start skipping, and continue to the next char.
    if(c=='<' && !skipStarted)
    {
        skipStarted = true;
        continue;
    }

    //if its a '>' and we started skipping,
    //then we finish skipping, and continue to the next char.
    if(c=='>' && skipStarted)
    {
        skipStared = false;
        ifstr.get(c);
        if(c==' ')
            continue; 
    }

    //if we are skipping, then we go to the next char.
    if(skipStarted)
        continue;

    //otherwise we simply output the character.
    ofstr<<c;

}
于 2012-08-09T18:09:10.997 に答える
0

暗闇でのもう 1 つのショット:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main() {

    ifstream ifstr("project.txt");
    ofstream ofstr("past.txt");
    if(ifstr.fail()){
        cout << "error!" << endl;
    } // if

    bool skipOutput = false;
    do
    {
        string word;
        ifstr >> word;
        if(!word.empty() && word[0] == '<')
        {
            skipOutput = true;
        }
        if(!skipOutput)
        {
            ofstr << word << " ";
            // replicate the output to stdout
            cout << word;
        }
        if(word[word.length()-1] != '>')
        {
            skipOutput = false;
        }
    } while(!ifstr.eof());
    cout << endl << "copy complete" << endl;

    ifstr.close();
    ofstr.close();

    //system ("pause"); Doesn't compile with my system
    return 0;
} // main

'<' と '>' で囲まれた単語を除外したいだけなら、これで十分です。<>タグのより複雑な解析ルールがある場合は、質問を詳しく説明する必要があります。

于 2012-08-09T18:23:32.437 に答える