编程论坛
注册
登录
编程论坛
→
C++教室
输入字符串,提出时间
edenpan
发布于 2013-03-02 11:19, 337 次点击
输入为 1992年2月15日这样的格式,要求可以提取出year = 1992, month = 2, day = 15(int)这样的结果,不知道有什么好的方法没有??
我只想到了一位一位的判断,不知道还有没有简单的方法,呵呵,忘可以告知。
4 回复
#2
rjsp
2013-03-02 12:05
scanf("%d年%d月%d日",&year,&month,&day) == 3
#3
好聚好散
2013-03-02 17:55
次奥,那是C好不好,
#4
邓士林
2013-03-04 00:34
以下是引用
rjsp
在2013-3-2 12:05:04的发言:
scanf("%d年%d月%d日",&year,&month,&day) == 3
这个是你输入的时候为暗示,但是输入达不到1992年3月15日这样的效果,你可以试下库函数中的atoi():将字符串转换为整型值。
#5
edenpan
2013-03-04 23:09
回复 4楼 邓士林
对于整个的字符串用atoi估计不行吧。我只能想到就是一个字节一个字节的判断,如果不是数字的话再转到存储下一个日期的状态,额 不知道这样说对不对。
唔 但是觉得一个字节,一个字节的判断太繁琐了。想看下有没有好的写法???
程序代码:
for
(
int
j=
0
; j <
4
; j++)
year[j] = buf[j];
itsyear = (year[
0
]-
'
0
'
) *
1000
+ (year[
1
]-
'
0
'
)*
100
+(year[
2
]-
'
0
'
)*
10
+(year[
3
]-
'
0
'
);
if
(buf[
7
] <=
'
9
'
&& buf[
7
] >=
'
0
'
)
{
month[
0
] = buf[
6
];
month[
1
] = buf[
7
];
ismonth =
1
;
}
else
{
month[
0
] =
'
0
'
;
month[
1
] = buf[
6
];
ismonth =
0
;
}
itsmonth = (month[
0
]-
'
0
'
)*
10
+ (month[
1
]-
'
0
'
);
cout
<<
"
month
"
<<itsmonth<<endl;
if
(buf[i-
4
]<=
'
9
'
&&buf[i-
4
]>=
'
0
'
)
{
day[
0
] = buf[i-
4
];
day[
1
] = buf[i-
3
];
//
cout<<"thisi";
}
else
{
day[
0
] =
'
0
'
;
day[
1
] = buf[i-
3
];
//
cout<<"thisi~!!!";
}
itsday = (day[
0
]-
'
0
'
)*
10
+(day[
1
]-
'
0
'
);
我就是觉得这一段实在是太繁琐了,想问下 有没有简便的方法??(我只想到状态机的改变,不知道对不对。。。)
呵呵
1