我正在编写一个程序,它将日期字符串转换为三个单独的int变量:年,月,日。sscanf C++将字符串拆分为整数有时不起作用
int m,d,y;
sscanf("2011-03-08","%i %*[-] %i %*[-] %i",&y,&m,&d);
cout << y<<" "<<m<<" "<<" "<<d<<std::endl;
sscanf("2011-03-07","%i %*[-] %i %*[-] %i",&y,&m,&d);
cout << y<<" "<<m<<" "<<" "<<d;
如果我转换2011-03-08 2011-03-09或者,这一天将是0,但对于2011-03-07,06 ......这一天是7,6,...正如我所期望的那样。有人可以解释它,为什么它不适用于08或09年,只为他们?
预先感谢您!
我认为这可能是由于八进制,请尝试使用%d – QuentinUK 2013-02-24 12:47:17
你真的应该不能混合使用C和C++这样。这些是不同的语言,所以避免在编写C++ – LihO 2013-02-24 12:56:59