如何检测'输入密钥'在c ++中?

时间:2017-10-11 14:33:12

标签: c++ vector iterator integer

我想检测输入按下以打破循环。 如果用户按2连续进入,则循环中断。 我使用vector来存储用户输入。 所有变量的类型都是整数。

#include <iostream>
#include <vector>

using namespace std;

int main()
{   int buffer;
    vector<int> frag;
    do
    {
        cin >>buffer;
        frag.push_back(buffer);
    }while(frag.end()!='\n');


}

如何从错误消息中逃脱 &#34;不匹配&#39;运营商!=&#39; (操作数类型是&#39; std :: vector :: iterator .....&#34;?

1 个答案:

答案 0 :(得分:0)

您可以将std::cin.get\n进行比较:

std::vector<int> vecInt;
char c;

while(std::cin.peek() != '\n'){
    std::cin.get(c);

    if(isdigit(c))
        vecInt.push_back(c - '0');
}

for (int i(0); i < vecInt.size(); i++)
    std::cout << vecInt[i] << ", ";

The input : 25uA1 45p
The output: 2, 5, 1, 4, 5,
  • 如果您想要读入两个整数值,那么在第二次按Enter键后它将停止读取:

    std::vector<int> vecInt;
    int iVal, nEnterPress = 0;
    
    
    while(nEnterPress != 2){
    
        if(std::cin.peek() == '\n'){
            nEnterPress++;
            std::cin.ignore(1, '\n');
        }
        else{
            std::cin >> iVal;
            vecInt.push_back(iVal);
        }
    }
    
    for (int i(0); i < vecInt.size(); i++)
        std::cout << vecInt[i] << ", ";
    
    Input:  435  (+ Press enter )
            3976 (+ Press enter)
    
    Output: 435, 3976,