我有一个用于我的高级 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();
}
除了一个问题外,所有这些都有效。当我尝试运行程序并打开文件时,我收到一个错误,告诉我索引超出范围。现在,我知道这意味着什么,但我不明白问题是如何发生的。而且,如果我不知道是什么导致了问题,我就无法解决它。我已经读过可以使用 for 循环搜索字符串,当然这也适用于 char 数组,并且其中有代码可以执行该转换,但在这两种情况下我都会遇到相同的错误. 我知道它正在正确读取文件,因为最终程序还必须执行字符计数(这是有效的),并且它从头到尾完美地读回了目标文档中每一行的大小。反正我没办法,所以我想我会请教更高的权力。有任何想法吗?