cin关键字在文本编辑器中不起作用

时间:2018-04-07 09:38:25

标签: c++ cin

我正在使用scite文本编辑器(我不能使用任何IDE或编译器,因为我还需要使用Makefiles,只有当我使用某种文本编辑器时才可以使用它)用于c ++中的所有编码。但是,我一直面临同样的挑战;文本编辑器(我在包括键盘和升华文本在内的多个文件编辑器上尝试过此操作)不会从键盘读取任何输入。这是源代码:

#include <iostream>
#include <iomanip>
using namespace std;

const int SIZE_OF_ARRAY = 5;

int main(){
int x, y;
int counter = 0;
int elements[SIZE_OF_ARRAY];
cout << "Please enter a number ";
cin >> x;
cin.ignore();
cout << "Please enter a choice ";
cin >> y;
if(y == 1){
 for(int i = 0; i < SIZE_OF_ARRAY; i++)
  elements[i] = -1*SIZE_OF_ARRAY + x;

 for(int j = 0; j < SIZE_OF_ARRAY; j++)
  cout << elements[j] << " ";
}

 else if(y == 2){
  for(int i = 0; i < SIZE_OF_ARRAY; i++){
   if(i == 0)
    elements[i] = -1*x;
   else{
    elements[i] = elements[i-1] + 1;
   }
}

for(int j = 0; j < SIZE_OF_ARRAY; j++)
 cout << elements[j] << " ";
}

else if(y == 3){
 for(int i = 0; i < SIZE_OF_ARRAY; i++){
  counter++;
  elements[i] = 7*x*counter;
 }

for(int j = 0; j < SIZE_OF_ARRAY; j++)
 cout << elements[j] << " ";
}
}

该程序应该将来自用户的任何数字作为输入,并且根据用户输入的数字选择(在1和3之间),操纵以某种方式首先输入的值。

选择一个(用户选择首选) 该程序否定了数组的大小,并添加了用户首次输入的数字,并使用结果值填充数组。

选择二(用户选择第二选择) 程序否定用户输入的数字,将其放在第一个数组位置,然后每个连续元素比前一个元素多一个单位。

选择三(用户选择第三选择) 使用前五个七的倍数填充数组。然后将每个数字移动一个等于用户首次输入的数字的因子。

我在IDE(Codeblocks)上运行它,它运行得非常好。但是,在任何文本编辑器上,'cout'语句都打印出变量x和y,每个变量等于零,而不是设置为从键盘输入的值。它甚至不允许任何键盘输入。任何关于我如何解决这个问题的答案都会非常感激。

1 个答案:

答案 0 :(得分:0)

Hoosain,继续上述评论,当您使用IDE时,您必须配置编译器的路径以及您希望使用的所有编译器选项,以及生成的可执行文件和目标文件的位置等。你在Windows上使用CodeBlocks,你基本上很幸运,CodeBlocks将自动检测是否安装了MinGW并设置其编译器配置,以允许您构建和运行代码,而无需配置编译器详细信息。 Geany是另一个能够自动检测和使用MinGW的编辑器。

对于剩余的IDE,您需要配置它们以查找和使用已安装的编译器(MinGW),以及配置所有需要的编译器选项(至少使用{{1启用编译器警告) }})。

这就是那些仅使用为其配置的IDE的新程序员遇到问题的地方......在告诉IDE编译器所在的位置以及要使用哪些编译器选项之前,您必须知道编译器的位置找到并理解您应该使用的最小编译器选项集。

学习使用编译器的方法是使用旧的命令行。 (是的,在Windows上的那个-Wall -Wextra,在早期版本中通常被标记为&#34; DOS提示符&#34; IDE只是编译器的前端,执行相同的命令你只需在命令行输入即可编译程序。

学习如何使用编译器将在学习编码时节省大量时间。你可以简单地打开一个命令提示符并编译你想要的任何文件,而不需要设置项目等。当学习编码时,试图将一些小例子插入到IDE中会花费更多的时间并且通常比它的价值更麻烦。而不是担心如何使用IDE,而是关注&#34;如何使用您的编译器&#34;第一

由于您在Windows上安装了MinGW,因此只需从命令提示符进行编译即可将MinGW cmd.exe目录的路径添加到用户环境中。您可以在此处添加bin作为环境变量:

PATH

顶部窗口(您的用户变量)中,点击添加(或修改)Start Menu-> (rt-click on Computer)-> Properties-> Advanced System Settings-> (Advanced tab)-> Environment Variables &#34;变量名称&#34;。通常,如果您在默认位置安装了MinGW,只需将路径添加为&#34;变量值&#34;:

PATH

(验证计算机上的路径)

注意:窗口用分号分隔路径组件,所以如果已经设置了c:\MinGW\bin;c:\MinGW\mingw32\bin 变量,只需在那里和你之间添加一个分号另外。如果您已经打开了命令提示符,则必须将其关闭并再次打开才能使新路径生效。只需打开PATH(您可以单击图标(左上角)和选择Start Menu-> Accessories-> Command Prompt设置字体(推荐Lucida Console 12)和高度/宽度)

现在,您已配置命令提示符,以允许您在文件系统中的任何位置编译任何文件。例如,我使用您发布的代码进行了测试(我修改了它以添加信息提示)。编译它是一块蛋糕。我将可执行文件保存在Properties目录中,以保持源和二进制文件分开。

我将您的文件命名为bin

<强>编译

然后只需输入正常的array_get.cpp编译器命令,并至少使用g++选项来启用编译器警告(您可以添加-Wall -Wextra以及您想要的任何其他警告,我建议在至少添加-pedantic,这样你的编译器就会警告你在多个可能发生冲突的范围内声明的任何变量。 -Wshadow选项允许您指定可执行文件的位置(我只使用单独的-o目录,如上所述)。因此,要编译代码并将其链接到bin,我必须输入的是:

bin\array_get.exe

(在没有警告的情况下编译之前不要接受代码 - 阅读任何警告(它会给出问题线),了解它告诉你的是什么,然后去解决它)

示例使用/输出

C:\Users\david\Documents>g++ -Wall -Wextra -o bin\array_get array_get.cpp

那就是它。由于MinGW使用C:\Users\david\Documents>bin\array_get.exe Please enter a number: 21 Please enter a choice (1-3): 3 147 294 441 588 735 ,因此您在Windows上使用的编译器命令与在Linux中使用的命令完全相同,因此从命令行学习编译会带来双重好处。

现在您可以使用任何文本编辑器来编辑代码,同时您可以根据需要简单轻松地重新编译命令提示符,直到代码正确为止。没有项目对话框,每个文件都没有不同的文件夹,只需从命令行直接编译任何文件的自由。 (我实际上按类型分隔我的源代码,例如c,cpp),你发现什么最适合你的。我还使用一个简单的gcc文件,它将exename和source.cpp名称作为参数,然后使用我设置的选项进行编译 - 它只是减少键入bat

此外,由于您现在位于编译器所在的位置以及要使用的选项,因此可以在任何IDE上打开“设置”窗口并设置相应的编译器命令和编译器选项,以允许IDE为您编译代码。试一试,如果您有其他问题,请告诉我。