我只是在学习C ++的语法,出于某种原因,我必须在脚本中输入cin.ignore();
两次才能使我的程序暂停一次。请注意,第48行已注释掉,以便进行故障排除。
1 // Lab 3 Exercise 1
2 // Input Using cin >>
3 //
4 // Program by: Robert J
5
6 #include <iostream>
7 #include <cmath>
8 #include <string>
9 using namespace std;
10
11 // creating functions
12 float delta_miles(float end_mileage, float start_mileage){
13 return end_mileage - start_mileage;
14 };
15
16 float mileage(float end_mileage, float start_mileage, float travel_time){
17 return (end_mileage - start_mileage) / travel_time;
18 };
19
20 float mileconv(float miles){
21 // There are 1604 m in a mile
22 return miles * 1.604;
23 };
24
25 int main(){
26 // Variable definitions
27 float milestart, milesend, hours, total_miles, mph; // floatValue is of type float
28
29 printf("Enter the starting mileage (miles): " );
30 cin >> milestart;
31 printf("Enter the ending mileage (miles): " );
32 cin >> milesend;
33 printf("Enter the number of hours traveled (2.25 horus = 2 horus 15 minutes): " );
34 cin >> hours;
35
36 // Calculations
37 total_miles = delta_miles(milesend, milestart);
38 mph = mileage(milesend, milestart, hours);
39
40 // Output
41 printf("\n"); // seperator that is easy to find
42
43 printf("Total miles traveled:\t%f\n", total_miles);
44 printf("Miles per Hour: \t%f\n", mph);
45 printf("Total kilometers:\t%f\n", mileconv(total_miles) );
46 printf("Kilometers/Hour:\t%f\n", mileconv(mph) );
47
48 // cin.ignore();
49 cin.ignore();
50 // Exit code:
51 return 0;
52 }
我不想像我的教授一样使用system("pause");
函数,因为我使用的是Unix系统而且必须system("read");
,此时评分者看不到我的输出
我也尝试从上一个\n
删除printf
,但无济于事。
有谁看到这里有什么问题?
提前致谢。
答案 0 :(得分:1)
正是因为这行代码:
cin >> hours;
这会读取小时数,但不会读取您之后按下的输入。因此,您的第一个cin.ignore()
调用会忽略输入密钥。只有你的第二个会导致暂停。
如果要读取线条,请使用读取线条的函数。不要使用读取数字的函数并期望它读取一行。
答案 1 :(得分:1)
David Schwartz回答了你的为什么,但是你的问题的解决方案,在程序结束时暂停,可以通过这个解决(这是我在这种情况下总是做的)
endl
cin.get();
从流中检索一个字符,但只有在按Enter键刷新时才会这样做