'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
我刚开始阅读这本书,并从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()
将检查是否将正确的值赋给输入流中的变量
相关文章:
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 根据下面的作者,如果两个指针指向不同的数组,则比较的第一个版本将未定义
- 作者在解释C 中的堆栈和堆时犯了一个错误,或者我正在误读某些内容
- Bjarne Stroustrup PPP - 第 9 章 演练 4 - cout 枚举错误
- 代码在Visual C ++中无法按预期工作(来自bjarne stroustrup编程和原则书籍2n版本的示例)
- Bjarne Stroustrup Book - Vector and For loop - 将不起作用
- Bjarne Stroustrup在他的FAQ中"foundation libraries"是什么意思?
- std::shared_mutex 与 std::shared_lock 是读者或作者的首选
- 在Bjarne Stroustrup的C 书中,这个示例有什么问题
- 对于违反访问的例外,我们应该责怪作者
- Rapidjson漂亮的打印使用JSON字符串作为作者的输入
- BOOST :: simel_lock and Boost :: shared_lock for读者作者锁
- 为什么在Bjarne Stroustrup的书中,构造函数Zlib_init在类Zlib_init中是私有的
- 为什么Bjarne "Tour of C++"中的这段代码有效?
- 读者-作者:分割错误c++
- Bjarne Stroustrup访谈-抽象和手工编写的代码
- "std_lib_facilities.h"(来自Bjarne Stroustrup的编程:原理和实践)不起作用
- 为什么作者声称这段代码会导致种族
- Bjarne 对这个 ADL 示例的看法是错误的,还是我有一个编译器错误
- 'Programming: Principles and Practice Using C++'(第2版),作者:Bjarne stroustrup,第3.3章:代码不起作用