我有这段代码:
#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 :(得分:1)
发布您的Counter类定义 正如其中一条评论正确陈述的那样,我看不出计数器看不到相同的输入var。
编辑:然后根据您的代码修复应该是 在主
中替换getline(cin, input);
与
getline(cin, test.input);
并删除
string input;
答案 1 :(得分:0)
这是我的解决方案。
int main()
{
string input;
cout << "Enter a string\n";
getline(cin, input);
Counter test(input); // highlight
test.countcharacters();
test.countnumbers();
}
您需要调用类Counter
的构造函数并将'input'传递给Counter::input
(当然,您需要添加一个带有字符串作为参数的构造函数)。或者您可以编写如下函数:
void Counter::setInput(string _input)
{
this.input = _input;
}
并在开始计数之前调用此函数。