2017-02-09 137 views
0

我读到的文件中有字符串“hello”。 没有错误,程序说“你有135197296 E”,这显然是错误的。我被困在这里。我是C++新手,看起来这将是一个有趣而简单的程序......我错了。C++计数器不能正常工作

我不知道它是否重要,但完成的程序应该能够打开用户提供的文件,读取文件,并将字母的频率放到单独的文件中。很显然,我还没有得到到那一步,我只要求帮助该位:)

int main() { 
    string filenamein, filenameout; 
    char character; 
    ifstream fileC; 
    int tletter, eletter; 

    cout << "which file do you want to open?"; 
    cin >> filenamein; 

    fileC.open(filenamein.c_str()); 
    if (fileC) 
    { 
     while (fileC) 
     { 
      fileC.get(character); 
      char e, E; 
      if (character == 'e'|| character == 'E') 
      { 
       eletter++; 
      } 
     } 
    } 

    cout<< "You have " << eletter <<" E's"; 
    fileC.close(); 

    return 0; 
} 
+1

您无法将您的计数器初始化为0。 –

回答

0

在C++中,原始变量如int不会被初始化,除非你明确地对它们进行初始化。这通常是效率低下的,因为有时候你不知道变量在声明时想要假设的第一个值,所以将其初始化为例如0将是一个冗余写入操作。

因此,如果你想让你的eletter0开始,你必须这样做。

int eletter = 0; 

这样你就从0算起。如果你没有初始化它,那么当你分配内存的时候,它的初始值将是任何垃圾数据在你的计算机内存的那个位置上的数据量,在这种情况下,它大约是1.35亿。