2013-07-17 39 views
-2

访问我有这样的代码:用户输入的成员函数

#include <iostream> 
#include <string> 
#include "header8.h" 

using namespace std; 

int main() 
{ 
    Counter test; 
    string input; 

    cout << "Enter a string\n"; 
    getline(cin, input); 
    test.countcharacters(); 
    test.countnumbers(); 
} 

void Counter::countcharacters(){ 
    for(unsigned int i=0; i<input.length(); i++){ 
     if(input.at(i) == 'a'){ 
      alphabet[0]++; 
     } 
    } 
} 

void Counter::countnumbers(){ 
    for(unsigned int i;i<input.length();i++){ 
     if(input.at(i) == '0'){ 
      numbers[i]++; 
     } 
    } 
} 

我的错误:

当我进入我的字符串,其值始终返回0。任何想法,为什么?

+0

请缩进你的代码,使其可读。 –

+0

而四个失踪的大括号会很好。 – chris

+2

从我所知道的情况来看,'test'完全不知道'input'。我打赌,如果它编译,它使用一些默认字符串。 – chris

回答

1

发布您的计数器类定义 作为正确说明的意见之一,我可以看到没有办法计数器看到相同的输入变量。

编辑:那么根据你的代码修复应 更换主

getline(cin, input); 

getline(cin, test.input); 

,并删除

string input; 
+0

以下是我的班级定义的链接: http://pastebin.com/3Y5Jhsk0 – PhDre

0

这里是我的解决方案。

int main() 
{ 
    string input; 
    cout << "Enter a string\n"; 
    getline(cin, input); 

    Counter test(input); // highlight 
    test.countcharacters(); 
    test.countnumbers(); 
} 

您需要Counter类和转让“输入”的构造函数调用Counter::input(当然,你需要添加一个构造函数的字符串作为参数)。或者您可以编写如下功能:

void Counter::setInput(string _input) 
{ 
    this.input = _input; 
} 

并在开始计数前调用此函数。