\xxx是当成 3 octal digits吗`解决方法
\xxx是当成 3 octal digits吗`?
顺便帮我看下下面程序,感觉这个程序有问题,如果\xxx真的是当成 3 octal digits,那么转成int后会再调用digit,等下这个int会因为> base(等于8)而出错
#include <limits>
#include <stdexcept>
#include <string>
#include <stdio.h>
#if 0
using std::domain_error;
using std::range_error;
using std::string;
#endif
namespace {
inline int digit(char c, int base) {
int value;
switch (c) {
case '0 ': value = 0; break;
case '1 ': value = 1; break;
case '2 ': value = 2; break;
case '3 ': value = 3; break;
case '4 ': value = 4; break;
case '5 ': value = 5; break;
case '6 ': value = 6; break;
case '7 ': value = 7; break;
case '8 ': value = 8; break;
case '9 ': value = 9; break;
case 'a ': case 'A ': value = 10; break;
case 'b ': case 'B ': value = 11; break;
case 'c ': case 'C ': value = 12; break;
case 'd ': case 'D ': value = 13; break;
case 'e ': case 'E ': value = 14; break;
case 'f ': case 'F ': value = 15; break;
default:
throw domain_error(string( "invalid digit "));
}
if (value> =base)
throw domain_error(string( "invalid digit "));
return value;
}
inline char next_char(char const *&p) {
顺便帮我看下下面程序,感觉这个程序有问题,如果\xxx真的是当成 3 octal digits,那么转成int后会再调用digit,等下这个int会因为> base(等于8)而出错
#include <limits>
#include <stdexcept>
#include <string>
#include <stdio.h>
#if 0
using std::domain_error;
using std::range_error;
using std::string;
#endif
namespace {
inline int digit(char c, int base) {
int value;
switch (c) {
case '0 ': value = 0; break;
case '1 ': value = 1; break;
case '2 ': value = 2; break;
case '3 ': value = 3; break;
case '4 ': value = 4; break;
case '5 ': value = 5; break;
case '6 ': value = 6; break;
case '7 ': value = 7; break;
case '8 ': value = 8; break;
case '9 ': value = 9; break;
case 'a ': case 'A ': value = 10; break;
case 'b ': case 'B ': value = 11; break;
case 'c ': case 'C ': value = 12; break;
case 'd ': case 'D ': value = 13; break;
case 'e ': case 'E ': value = 14; break;
case 'f ': case 'F ': value = 15; break;
default:
throw domain_error(string( "invalid digit "));
}
if (value> =base)
throw domain_error(string( "invalid digit "));
return value;
}
inline char next_char(char const *&p) {