-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。知道为什么吗?

4

2 回答 2

1

发布您的 Counter 类定义正如正确说明的评论之一,我看不到 counter 看到相同的输入 var。

编辑:然后根据您的代码修复应该在 main 中替换

getline(cin, input);

getline(cin, test.input);

并删除

string input;
于 2013-07-17T04:13:22.573 回答
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;
}

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

于 2013-07-17T04:37:32.573 回答