私は高度な C++ クラスのプロジェクトを持っており、多くのことを行うことになっていますが、最初にこの機能に集中しようとしています。機能した後、他のニーズを満たすために微調整できるからです。この関数は、ファイル全体を検索し、文書内に出現する ' ' の回数をカウントすることで単語カウントを実行します。正確ではないかもしれませんが、良い出発点になるでしょう。これが私が今持っているコードです:
void WordCount()
{
int count_W = 0; //Varaible to store word count, will be written to label
int i, c = 0; //i for iterator
ifstream fPath("F:\Project_1_Text.txt");
FileStream input( "F:\Project_1_Text.txt", FileMode::Open, FileAccess::Read );
StreamReader fileReader( %input );
String ^ line;
//char ws = ' ';
array<Char>^ temp;
input.Seek( 0, SeekOrigin::Begin );
while ( ( line = fileReader.ReadLine() ) != nullptr )
{
Console::WriteLine( line );
c = line->Length;
//temp = line->ToCharArray();
for ( i = 0; i <= c; i++)
{
if ( line[i] == ' ' )
count_W++;
}
//line->ToString();
}
//Code to write to label
lblWordCount->Text = count_W.ToString();
}
1つの問題を除いて、これはすべて機能します。プログラムを実行してファイルを開こうとすると、インデックスが範囲外であることを示すエラーが表示されます。さて、それが何を意味するかはわかりますが、問題がどのように発生しているのかわかりません。そして、何が問題を引き起こしているのかわからない場合、それを修正することはできません。forループを使用して文字列を検索できることを読みました。もちろん、これはchar配列にも当てはまり、その変換を実行するコードがそこにありますが、どちらの場合も同じエラーが発生します. 最終的なプログラムは文字カウントも実行する必要があり (これは機能しています)、ターゲット ドキュメントの各行のサイズを最初から最後まで完全に読み戻すため、ファイルを正しく読み取っていることがわかります。とにかくアイデアが尽きたので、上位勢力に相談しようと思いました。何か案は?