在cin输入赋值时,如何以逗号(,)作为分隔符?

Shining 2005-03-15 11:15:07
在 cin >> a >> b >> c; 这样的语句,为三个变量赋值时,默认都是以空格为分隔符。

请问改如何控制,使得赋值以逗号(,)作为分隔符?

例如赋值形式是:

6,6,8 而不是 6 6 8
...全文
5396 34 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
Shining 2005-03-20
  • 打赏
  • 举报
回复
该问题已经结贴 ,得分记录: naturemickey (1)、 tudou614 (1)、 showlie (1)、 JustLikeTheWind (1)、 justioo (1)。
Shining 2005-03-20
  • 打赏
  • 举报
回复
OK!现在是星期天晚上23:58分,准时结帖。感谢楼上所有的兄弟、姐妹(如果有的话),楼上兄弟的方法我会试的。不管成功与否,写了这么多,怎么都送你一分了。

愿大家一起学习进步!!!
justioo 2005-03-20
  • 打赏
  • 举报
回复
这个程序可以用任何非0123456789的字符来间隔

#include<iostream>
# include<string>
# include<vector>
# include<algorithm>
# include<conio.h>
using namespace std;
vector<int> get_num(string str)
{
vector<int> vec;
string::size_type pos=0,pre=0;
while(
((pos=str.find_first_not_of("0123456789",pos))
!=string::npos)
)
{
string temp=str.substr(pre,pos-pre);
vec.push_back( atoi(temp.c_str()));
pos++;
pre=pos;
}
string temp2=str.substr(pre,pos-pre);
vec.push_back( atoi(temp2.c_str()));
return vec;
}
void main()
{
cout<<"input : \n";
string str;
cin>>str;
vector<int> num_vec=get_num(str);

cout<<"the num you input is : "<<endl;
for(vector<int>::iterator iter=num_vec.begin();iter!=num_vec.end();iter++)
cout<<*iter<<ends;
cout<<endl;
getch();
}
Shining 2005-03-19
  • 打赏
  • 举报
回复
楼上的兄弟,虽然我在CSDN注册的早,可是却到现在才开始上来泡着,没赚太多分可以拿出来散掉的。

而且我本来以为这个问题很简单的,所以没想到拿很多分出来搞定这么简单的问题。

更何况,我把境界提得很高——期待的是大家一起学习进步,不是赚分。(分又不能兑换成钱的HOHO~)



tudou614(魔蟹座的SATAN)兄的加分早已列入计划,这么多可以行答案,看来不好意思,只能大家每人1分了。

以后会注意。
JustLikeTheWind 2005-03-19
  • 打赏
  • 举报
回复
我考,才5分!!!
楼主太小气了!!!
JustLikeTheWind 2005-03-19
  • 打赏
  • 举报
回复
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
int a,b,c;
cin>>a;cin.ignore(1,',');
cin>>b;cin.ignore(1,',');
cin>>c;cin.ignore(1,',');
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
system("pause");
return 0;
}
heroboy2000(动感超人) 思路正确,参数错了。嘿嘿。
tudou614 2005-03-19
  • 打赏
  • 举报
回复
我的回复可以实现你要的效果啊··
Shining 2005-03-18
  • 打赏
  • 举报
回复
heroboy2000(动感超人) 说的:
cin>>a;cin.ignore(',');
cin>>b;cin.ignore(',');
cin>>c;cin.ignore(',');


这个方法我已试过,在Borland C++ v5.02下编译通过,但是程序运行时以“6,6,8”形式给a b c赋值仍然不正确。

本帖开到后天(星期天)晚上如果还无新的可行办法就结帖。
Shining 2005-03-18
  • 打赏
  • 举报
回复
楼上的兄弟不谢! 大家互勉互励。
heroboy2000 2005-03-17
  • 打赏
  • 举报
回复
cin>>a;cin.ignore(',');
cin>>b;cin.ignore(',');
cin>>c;cin.ignore(',');
shine51151 2005-03-17
  • 打赏
  • 举报
回复
re: azuresn(司空摘星)
多谢这位好心人~~
Shining 2005-03-16
  • 打赏
  • 举报
回复
你在你的帖子里对所有人给的分数总和得等于当初你决定开帖子时给的分:

例如你当初开帖子选择了给5分,那么你在帖子里最多只能给5个人、每个人1分,如果有多的分你给不完,那就给到自己身上。把分都散完了,应该就能结帖子了。
Ph0nix 2005-03-16
  • 打赏
  • 举报
回复
关注ing.............
shine51151 2005-03-16
  • 打赏
  • 举报
回复
我怎么不能结贴呢? 它老说我给的分数总和不对 唉~~
guyaguya 2005-03-16
  • 打赏
  • 举报
回复
cin.get()可以啊
Shining 2005-03-16
  • 打赏
  • 举报
回复
其实那种添加一个字符变量来处理逗号(,)的办法我一开始就这么做了,

在这里发个帖子,就是想了解和学学有没有楼上这位兄弟说的这种对分隔符进行设置的方法或函数。

可惜楼上这位兄弟没给个确定答案,我得继续寻觅了。

不过很感谢楼上兄弟的提示。结帖时送你一分!
Shining 2005-03-16
  • 打赏
  • 举报
回复
21cnbao(月影孤鸿) 说的:
cin是搞不定了,但是C的scanf则可以搞定,干嘛一定用cin呢?
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
cout << a << b << c;


其实我发这个帖子就是为了解决这个问题:将一个C的程序改写成C++的,要求最后输入输出格式都要一致。
在那个C程序中,变量赋值的语句就是“21cnbao(月影孤鸿)”说的这个方式,所以我需要在改写的C++语言程序中也控制为以逗号(,)作为分隔符。


目前看来“ tudou614(魔蟹座的SATAN)”提供的方法挺接近希望的。不管怎么样,谢谢以上各位兄弟。大家一起在C++的学习成长道路上进步吧~~

如果验证哪位兄弟的方法是可行的,怎么给你加分?
Shining 2005-03-16
  • 打赏
  • 举报
回复
fancy_wenge(鸽子) 提供的:
可不可以先把输入的字符串赋值给一个数组,通过处理数组来消除字符串中的“ ,”然后再依次赋值

这个我试试。
Shining 2005-03-16
  • 打赏
  • 举报
回复
txgg75618(网络蚂蚁)提供的:
int a,b,c
cin>>a>>",">>b>>",">>c>>endl;

这个是我最先想到的办法,不过已经验证是不行了。
showlie 2005-03-16
  • 打赏
  • 举报
回复
我记得好像有cin.set*(",")设置分隔符。手头没资料,自己查吧
加载更多回复(14)

65,199

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧