如何用CLION在Mac OS X上向EOF发出信号
How to signal EOF on MAC OS X with CLion
我最近开始学习C ,并一直关注该书加速C 。我在第3章中,试图运行书中给出的程序。我正在Mac OS上的Clion工作。代码如下:
#include "iomanip"
#include "ios"
#include "iostream"
#include "string"
#include "vector"
#include "algorithm"
using std::cin; using std::cout;
using std::endl; using std::string;
using std::setprecision; using std::streamsize;
using std::vector; using std::sort;
int main()
{
// Ask for and read student's name
cout << "Please enter your name: ";
string name;
cin >> name;
cout << "Hello, "<< name << "!"<< endl;
// Ask for and read mid-term and final grades
cout << "Please enter your mid-term and final grades: ";
double midterm_grade, final_grade;
cin >>midterm_grade >> final_grade;
// Ask for homework grades
cout << "Enter all your homework grades, followed by end-of-file";
vector<double> homework;
double x;
//Invariant : Homework contains all homework grades read so far
while (cin >> x)
{
homework.push_back(x);
}
// Check that the student entered some homework grade
typedef vector<double>:: size_type vector_size;
vector_size size = homework.size();
if(size == 0)
{
cout << "You must enter your grades. Please try again" << endl;
return 1;
}
// Sort the grades
sort(homework.begin(), homework.end());
// Compute the median output grade
vector_size mid = size/2;
double median;
median = size % 2 == 0 ? (homework[mid] + homework[mid-1])/2 : homework[mid];
// Compute and write the final grade
streamsize prec = cout.precision();
cout << "Your final grade is :" << setprecision(3) << 0.2*midterm_grade + 0.4*final_grade + 0.4*median<< setprecision(prec) << endl;
return 0;
}//
该程序编译良好,我可以输入名称以及等级。但是,当我按CTRL D(在MAC OSX终端中还会向stdin发出信号?)或cmd d(也建议)时,当我按CTRL D(已确认的EOF)时(也建议)。
当我按CTRL D时,该程序会重新启动。在按CMD D时,它具有一些异常的行为。有时可能会起作用,而有时则无法使用。我还试图查看preverences-> keymap,但找不到要设置的参数。
我认为我在这里缺少一些真正的基本关键设置。感谢您的帮助。
显然有效的是在运行窗口中发送" eof",然后程序每次运行而没有任何问题。
如果您使用的是Mac,则是命令(⌘) d 。如果您使用的是Windows,则它是控制( ctrl ) d 。
另外,如果您搜索" clion keymap"(clion首选项/设置) -> keymap->搜索eof和/或查看keymap设置,您将看到默认设置。
带有Clion的OS X存在已知问题。在 find-> action 中,disable run.process.with.pty ,它应如下:
您需要做的是在新的空线中按CMD D。在您的情况下,输入家庭作业等级,在下一个新的空线中,按CMD d。p>
相关文章:
- 堆栈上的前向迭代器
- boost::asio::async_read 在命名管道上不断返回 EOF
- 从主机向在VirtualBox linux机器上运行的服务器发送http请求
- 在getline上检查eof()有什么区别,即while(!getline().eof())和简单地检查while(ge
- ubuntu上带有mono的C#dll导入:不向dll收费
- 如何在Windows C ++上检测滚轮向下
- 如何用CLION在Mac OS X上向EOF发出信号
- 即使在内置素上实例化,也可以向模板参数类型的驱动器进行明确调用
- 使用前向材料(而不是双向术语)在硬件级别上做什么
- 无向图上顶点和边的变化
- gdb的奇怪行为([next]在块代码上向后跳几行)
- 如何将WER配置为在64位操作系统上向Microsoft发送32位转储
- eof函数如何在cpp上工作
- 如何获得有向图上给定顶点的输入边
- pclose() 返回管道的终止状态是否在所有平台上都向左移动了 8 位?
- 从 BHO 向 CAxWindow 上的 JS 公开方法(C++ )
- 我可以在没有任何前向声明的类/结构上访问静态成员函数吗?
- 在 android 上向 JNI 类添加私有字段会冻结应用程序
- 加权无向Boost图上的Floyd-Warshall(所有对最短路径)
- C++ eof 上的 istream tellg()/fail() :行为改变;解决方法