2012-06-27 43 views
1

在C++中,如果我们输入一个包含前导zereos的整数,它们将会出现任何错误。包含前导零的输入

为如:

int a; 
cin>>a; 

我们举一个输入00或01

或用绳子的帮助下,这是一个更好的主意输入查询。

+4

我没有看到尝试它的困难。 – chris

+1

您是否需要保留前导零? – jxh

+0

我试过了,似乎therir是没有错误,但只是想检查 – user1484638

回答

4

整数(或浮点数)没有前导零。如果你想保持前导零,那么你必须将输入作为字符串读取,并在需要时将其转换为数字。或者,您可以使用格式化打印结果时添加前导零。

+0

八进制或十六进制文字? – juanchopanza

+0

但是,如果我们输入0001或0022它将保留1和22 – user1484638

+0

@juanchopanza否和否,只有实际的数字存储在一个整数或浮点数。在存储器中存储的二进制数据中没有“前导零”的概念。 –

0

前导零将被删除。它不会被存储在内存中。

3

在C++中,如果我们输入一个包含前导zereos的整数,它们将会出现任何错误。

根据输入流格式标志的设置,您可能得不到您所期望的。默认值是希望用户输入始终为十进制。前导零不起作用。如果我们通过拨打std::cin.unsetf()来关闭它,该怎么办?

int main() { 
    int i; 
    std::cin.unsetf (std::ios::dec); 
    while (std::cin >> ii) { 
    std::cout << i << "\n"; 
    } 
} 

输出将是25,如果你输入25,但如果你输入025的输出为21。这是因为C++现在解释一个领先的输入零意味着以下是八进制数(或十六进制在前导0x或前导0X的情况下)。