我想检测输入按下以打破循环。 如果用户按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;?
答案 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,