成员函数访问的main中的用户输入

User input in main accessed by member functions

本文关键字:用户 输入 main 访问 成员 函数      更新时间:2023-10-16

我有这个代码:

#include <iostream>
#include <string>
#include "header8.h"
using namespace std;
int main()
{
    Counter test;
    string input;
    cout << "Enter a stringn";
    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。知道为什么吗?

发布您的Counter类定义正如其中一条正确的评论所说,我看不出计数器看到相同的输入变量。

编辑:然后根据您的代码进行修复更换主

getline(cin, input);

带有

getline(cin, test.input);

并删除

string input;

这是我的解决方案。

int main()
{
    string input;
    cout << "Enter a stringn";
    getline(cin, input);
    Counter test(input);  // highlight
    test.countcharacters();
    test.countnumbers();
}

您需要调用类Counter的构造函数,并将"input"传递到Counter::input(当然,您需要添加一个以字符串为参数的构造函数)。或者你可以写一个函数如下:

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

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