'Programming: Principles and Practice Using C++'(第2版),作者:Bjarne stroustrup,第3.3章:代码不起作用

'Programming: Principles and Practice Using C++' (2nd edition) by Bjarne stroustrup, chapter 3.3: The code isn't working

本文关键字:作者 Bjarne 3章 不起作用 代码 stroustrup and Principles Programming Practice Using      更新时间:2023-10-16

我刚开始阅读这本书,并从PDF文件中复制粘贴了以下代码:

// Read name and age (2nd version)
int main()
{
    cout << "Please enter your first name and agen";
    string first_name = "???"; // string variable
    // ("???” means “don’t know the name”)
    int age = –1; // integer variable (–1 means “don’t know the age”)
    cin >> first_name >> age; // read a string followed by an integer
    cout << "Hello, " << first_name << " (age " << age << ")n";
}

书上说它应该输出

Hello, 22 (age –1)

如果我输入

22 Carlos

但是我得到这个错误:

D:C++Part I The BasicsPrograms3.Read name and age (2nd).cpp|9|error: stray '226' in program|

程序没有编译

我意识到在"- 1"&;实际上并不是一个"负"产生绯闻;标志。. .";——";";——";它比负号大,看到了吗?

int age = –1

所以我把这个符号改成了一个负号并输入了22 Carlos它输出的是Hello 22,0而不是Hello 22, -1

为什么程序不工作时,我只是复制粘贴它从PDF文件?

为什么我把-号改成-"标志吗?

PDF文件中的字符看起来与-符号不同,这导致编译器无法识别该符号。

正如Ken White所说,你将一个字符串赋值给一个int,这会导致你的输入流失败,而你从来没有检查过。你可以这样做:

cin >> first_name >> age;
if(cin.fail())
    age = -1;
// Do stuff

cin.fail()将检查是否将正确的值赋给输入流中的变量