たとえば、単語間に複数の文字スペースがある、テキスト内の行が空である、一連の文字が繰り返されているなど、準備が不十分なテキスト ファイルが与えられたとします。あなたのタスクは、このテキスト ファイルを読み取り、いくつかの実行を行うことです。簡単な編集を行い、結果を別のファイルに書き込みます。以下は、実行する必要がある特定のタスクです。
(i) テキスト行で、4 つ以上のブランクのすべてのシーケンスを文字 $n$ で置き換える関数 compress() を作成します。ここで、n はブランクの数です。入力テキストに文字 $ が見つかった場合はどうすればよいですか?. 結果を別のテキスト ファイルに保存します。
(ii) 上記の compress() 関数で作成されたテキスト ファイルを元のテキストに変換する関数 expand() を記述します。
次のサンプル テキスト ファイル original-text.txt を使用して、(i) および (ii) の compress() および expand() 関数をテストできます。
1: ^^^^^あなた^が与えられた^^a^テキスト^^^^^^^^^^^^ファイル^それは^^^ひどく^^^
2: 用意された^^^以上^^^^1文字より^^^^^^^^^^^^^^^^間にスペース^^
3: 単語、^^^^行^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^空の^繰り返し^シーケンス^^^^^^^^
4: 空白^^^^^by^the^^^characters^^^^^$n$^^^^^,^ここで^^^n^は空白の^number^^
5: ^^^^^$^何^^しなければならない^^^^^^もし^^^^^文字^$^が^入力^テキストで^見つかる^場合
6: ?.結果を別のテキスト^ファイルに保存^^^^^^.
7: ^^^^^^^^^^^^^^^^^^^^^^^^^^
8: ^a^関数^^^^^expand()^^変換^^^^^^$n$^^テキスト^ファイル^作成を書きます。
上記の各テキスト行の先頭の数字はテキスト ファイルの一部ではなく、上記の例のテキスト ファイル内の文字スペースは「^」文字で表されていることに注意してください (実際のテキスト ファイルでは、スペース文字は' ' が使用されます)。
ファイル original-text.txt を入力として使用した compress() 関数の出力例:
1: $4$テキスト $10$ ファイルが与えられたとします。
2: $4$以上の$4$一文字$16$スペースなどを用意
3: 単語、$4$text$6$ 内の空の行、繰り返されるシーケンス $8$
4: 空白 $5$ by by characters$5$$n$$5$, n は空白の数
5: $5$$ 入力テキストに文字 $ が見つかった場合に $6$ しなければならないこと
6: ?.結果を別のテキスト ファイル $6$ に保存します。
7: $24$
8: 作成したテキスト ファイルを $6$$n$ に変換する関数 $5$expand() を記述します。
expand() 関数の出力は、original-text.txt のとおりです。
これは私がやろうとしていることです..
int main()
{
ifstream input("original-text.txt");
//Read Data
string data;
while (!input.eof())
{
getline(input,data);
cout << data << endl;
}
int i,n;
n= 0;
for( i = 0; data[i] != '\0'; i++ )
{
if( data[i] == ' ' )
n++;
cout << "$" << n << "$";
}
input.close();
return 0;
}