2012-01-19 9 views
2

私は何かを達成するために小さなプログラムを作成しています。&から始まり、23文字あるファイルから文字列を削除する

私はプログラムを使用してファイルを取得しましたが、多くの場所で '&'で始まる文字列があります。

私の問題の最も小さい部分について説明します。 私は文字列を持っています。その文字列には、「&」と23文字の数字で始まる文字がいくつか削除されます。

私はこれをどのように達成できるかお勧めします。

+0

これまでに何を試しましたか?あなたはそのファイルを読むことができましたか?どの言語を使用していますか?より具体的にしてください。編集:タグが表示されたC++、愚かな携帯電話がタグを表示していないことを今見た。残りの部分は依然として適用されます。 – Niclas

+0

私はどんな遅れでも、どのエディタからでもファイルを読むことができます。 実際には言語は現在障壁ではありません。 –

+0

私はグーグルで検索しようとしましたが、私はちょうどそこにクールなインテリジェントな人に尋ねると思った、そうでなければ私はやっていた文字列処理のために行くと思った。 –

答えて

0

string.findとstring.replaceを使用する必要があります。

のコード例ここhttp://www.cplusplus.com/reference/string/string/find/はそれを行うのに最適な方法を示し:)

std::string content = "some long string"; 
std::string string_to_replace = "some "; 

str.replace(content.find(string_to_replace),string_to_replace.length(),""); 

これは、「」コンテンツにstring_to_replaceはを見つけ、何でそれを置き換えます。これはもちろん、ファイルに書き込む前に問題を修正していることを前提としています。この例では、「長い文字列」が返されます。

+0

そのWebサイトのコード例は一般的に貧弱です。それを参照しないでください! –

+0

時には、リンクにあるものに間違いはありません。私が何かを見ない限り、私は間違いなくC++を学ぶことをお勧めしません。 –

+0

'using namespace std'は私が最初からうんざりしています! –

0

さて、あなたはファイル内のすべての文字列を読み取るためにループを作成する必要があります。もちろん

std::ifstream fin("input.txt"); 
std::string line; 

std::getline(fin, line); 
while(!fin.eof()) { 
    getline(fin, line); 
} 

、あなたはその場でファイルを変更することはできません。入力ファイルの内容を別のファイルに書き込む必要があります。

std::ifstream fin("input.txt"); 
std::ofstream fout("output.txt"); 
std::string line; 

std::getline(fin, line); 
while(!fin.eof()) { 
    fout << line << std::endl; 
    getline(fin, line); 
} 

唯一残っている事は「&」でこれらの文字列を検索し、その後の23個の文字を排除することです。

std::ifstream fin("input.txt"); 
std::ofstream fout("output.txt"); 
std::string line; 

std::getline(fin, line); 
while(!fin.eof()) { 
    unsigned int pos = line.find('&'); 

    if (pos != string::npos) { 
     string line2 = line.substring(0, pos -1); 
     line2 += line.substring(pos + 23); 
     line = line2; 
    } 

    fout << line << std::endl; 
    std::getline(fin, line); 
} 

最後に、input.txtを取り除く必要があります。お役に立てれば。

関連する問題