gpt4 book ai didi

c++ - 如何从用户那里获取整数输入,直到在 C++ 中遇到输入

转载 作者:行者123 更新时间:2023-11-30 03:15:45 25 4
gpt4 key购买 nike

我正在使用 C++ STL 库中的优先级队列,我想一直将元素插入队列,直到用户按下 Enter。

我试过使用 getchar() 来获取元素的输入,但它在队列中被保存为一系列 1。

priority_queue<int> v1;
priority_queue<int, vector<int>, greater<int> > v2;
cout<<"Enter the elements of the queue. Press enter to stop.\n";
while(a = getchar()!= '\n')
{
v1.push(a);
v2.push(a);
}
while(!v1.empty())
{
cout<<v1.top()<<" ";
v1.pop();
}

我希望输出是输入元素的最小和最大堆,但它给我的只是一系列 1

最佳答案

while(a = getchar()!= '\n')

it gives me is a series of 1's

warning with the priority of operators, you want

while((a = getchar())!= '\n')

目前你确实喜欢

while(a = (getchar()!= '\n'))

虽然输入字符不是换行符,但测试为真,所以 a 设置为 1


考虑到您下面的评论,如果该行为空或仅包含换行符或者如果该行不包含文字 int 则您想要读取行然后停止,否则提取 < em>int push

例如:

#include <iostream>
#include <queue>
#include <string>
#include <sstream>

using namespace std;

int main()
{
priority_queue<int> v1;
priority_queue<int, vector<int>, greater<int> > v2;
cout<<"Enter the elements of the queue. Press enter to stop.\n";

int a;
string s;

while (getline(cin, s) && (istringstream(s) >> a))
{
v1.push(a);
v2.push(a);
}
while(!v1.empty())
{
cout<<v1.top()<<" ";
v1.pop();
}
cout << endl;
}

编译和执行:

pi@raspberrypi:/tmp $ g++ -pedantic -Wall -Wextra c.cc
pi@raspberrypi:/tmp $ ./a.out
Enter the elements of the queue. Press enter to stop.
12
32

32 12
pi@raspberrypi:/tmp $

关于c++ - 如何从用户那里获取整数输入,直到在 C++ 中遇到输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56792148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com