带有字符、int 和向量C++的条件

Conditionals with char, int and vector C++

本文关键字:向量 C++ 条件 int 字符      更新时间:2023-10-16

所以,我一直在研究一个简单的程序,当给定一个仅由r和b组成的字母数组时,它将遍历该数组并计算每个字母的数量。

但是,程序运行正常,但输出 0, 0。

请帮忙!

这是我的代码:

#include <iostream>
#include <vector>
using namespace std;

int main() {

int red = 0;
int blue = 0;

vector <int> necklace;
int beads;
while (cin >> beads){
    necklace.push_back(beads);
}
for(beads = 0; beads < necklace.size(); beads++){
    if( beads == 'r' ){
       red++;
    }
    else if( beads == 'b'){
        blue++;
    }
}
cout << red  << endl << blue << endl ;
}

在你的程序中,珠子是一个整数。您正在将整数添加到项链矢量中。所以它不会进入你的 if 条件,因为珠子应该是"r"或"b",但它是某个数字。

你必须改变一点你的程序。首先将int更改为char,还要更改从输入中获取符号/字符的方式(循环(。其次,您必须修复检查向量中是否有"r"或"b"的问题。您必须使用表运算符"[]"。这是您的程序的固定版本:

#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int main()
{
    int red = 0, blue = 0;
    vector <char> necklace;
    char beads;
    string line;
    getline(cin, line);
    istringstream iss(line);
    while (iss >> beads)
    {
        necklace.push_back(beads);
    }
    for(int i = 0; i < necklace.size(); i++)
    {
        beads = necklace[i];
        if (beads == 'r' )
        {
            red++;
        }
        else if(beads == 'b')
        {
            blue++;
        }
    }
    cout << red  << endl << blue << endl ;
}