-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 クラス定義を投稿してください コメントの 1 つが正しく述べられているように、counter が同じ入力変数を参照する方法はありません。

編集:コードに基づいて、修正をメインで置き換える必要があります

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 に答える