如何在按下enter之前在c ++集中插入元素?

时间:2018-03-15 19:20:21

标签: c++ input set

例如:如果输入1,5,88,99,7作为输入,则在一组中插入1 5 88 99 7,然后按Enter键。 我的代码:

#include <bits/stdc++.h>
using namespace std;
set <char> num;
set <char> ::iterator i;
int main()
{
 int a;
 while(a=getchar())
 {

    if(a!='\n')
    {
        if(a!=',')
            num.insert(a);
    }
    else
        break;
}
for(i=num.begin(); i!=num.end(); i++)
    cout<<*i<<endl;
}

我得到的输出: 1 五 7 8 9

2 个答案:

答案 0 :(得分:-2)

#include <set>
#include <string>
#include <sstream>
using namespace std;
int main() {
   // cin >> s;
   string s = "5,2,3,4,1",t = "";
   stringstream ss(s);
   set<int> s_;
   while( getline(ss,t,',') )
       s_.insert(stoi(t));
   for(auto i : s_)
       cout << i << " ";
}

输出:1 2 3 4 5

答案 1 :(得分:-2)

1)要匹配修改后的问题(读取任意长度的整数)char by char,意味着你需要查看每个问题并查看它是否为数字。如果是,则需要根据收到的每个附加数字保持运行值。

2)如果要保存实际的整数值,你的集合必须是int,而不是char。

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

set <int> num;
set <int> ::iterator i;
int main()
{
  int a;
  int full_num=0;
  while(a=getchar())
  {
     if (isdigit(a)) 
     {
       full_num = full_num*10 + (a - '0');
     } 
       else if (a==',' || a=='\n') 
     {
       num.insert(full_num);
       full_num = 0;
       if (a=='\n') break;
     }
   }
   for(i=num.begin(); i!=num.end(); i++)
       cout<<*i<<endl;
 }