我有一個用於我的高級C++類的項目,它應該可以做很多事情,但我想先關注這個函數,因爲在它工作之後,我可以調整它滿足了其他需求。此功能搜索文件並通過計算文檔中出現的次數來執行字數統計。也許不準確,但這將是一個很好的起點。這裏是我現在的代碼:如何計算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數組,並且在那裏有代碼來執行該轉換,但是在這兩種情況下,我都會得到相同的錯誤。我知道它正在通過文件正確讀取,因爲最終的程序還必須執行字符計數(正在工作),並且從頭到尾完美地讀回目標文檔中每行的大小。無論如何,我沒有想法,所以我想我會諮詢更高的權力。有任何想法嗎?
字符串文字內的反斜槓需要加倍。 –
'String^line;'?這是一個MS特定的C++變體嗎?如果是這樣,請在標籤中提及。 –
@j_random_hacke:看起來像託管C++給我。但是,你是對的... @羅伯特貝瑞:請給它加標籤。 –