cin 关键字在文本编辑器中不起作用
cin keyword not working in text editor
我正在使用 scite 文本编辑器(我不能使用任何 IDE 或编译器,因为我还需要使用 Makefile,这只有在我使用某种文本编辑器时才有可能)用于我所有的代码都是用 C++ 编写的。但是,我一直面临着同样的挑战;文本编辑器(我已经在多个编辑器上尝试过,包括键盘和 sublime text)没有从键盘读取任何输入。这是源代码:
#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 取为零,而不是设置为从键盘输入的值。它甚至不允许任何键盘输入。任何关于我如何解决这个问题的答案将不胜感激。
Hoosain,继续上面的评论,当您使用 IDE 时,您必须配置编译器的路径以及您希望使用的所有编译器选项,以及生成的可执行文件的位置和目标文件等。当您在 windows 上使用 CodeBlocks 时,您基本上很幸运,CodeBlocks 会自动检测是否安装了 MinGW 并设置其编译器配置以允许您构建和 运行 您的代码,而无需配置编译器细节。 Geany 是另一个做得很好的编辑器 auto-detecting 并且使用 MinGW。
对于剩余的 IDE,由您来配置它们以查找和使用您安装的编译器 (MinGW),以及配置所有需要的编译器选项(至少启用编译器警告-Wall -Wextra
).
这就是那些只使用过为他们 运行 配置的 IDE 的新程序员遇到问题的地方......在你告诉 IDE 你的编译器在哪里以及哪个编译器之前要使用的编译器选项,您必须知道编译器的位置并了解应该使用的最少编译器选项集。
学习使用编译器的方法是使用古老的命令行。 (是的,那是 windows 上的 cmd.exe
,在早期版本中通常被标记为 "DOS Prompt")IDE 只是编译器的 front-end,它执行相同的操作您只需在命令行中输入命令即可编译您的程序。
学习如何使用编译器将为您节省大量学习编码的时间。您可以简单地打开一个命令提示符并编译您想要的任何文件,而无需设置项目等。在学习编码时,试图将小示例硬塞进 IDE 比值得的。与其担心如何使用 IDE,不如先关注 "how to use your compiler"。
由于您在 windows 上安装了 MinGW,要能够从命令提示符进行编译,您所要做的就是将 MinGW bin
目录的路径添加到您的用户环境中。您可以通过在此处添加 PATH
作为环境变量来实现:
Start Menu-> (rt-click on Computer)-> Properties->
Advanced System Settings-> (Advanced tab)-> Environment Variables
在Topwindow(你的用户变量)中,点击添加(或编辑)PATH
"Variable name"。通常,如果您将 MinGW 安装在默认位置,只需将路径添加为 "Variable value":
c:\MinGW\bin;c:\MinGW\mingw32\bin
(验证计算机上的路径)
(注意: windows 用 semi-colon 分隔路径组件,所以如果已经有一个 PATH
变量集,只需添加a semi-colon 介于现有内容和添加内容之间。此外,如果您已经打开命令提示符,则必须关闭它并再次打开它以使新路径生效)只需打开 Start Menu-> Accessories-> Command Prompt
(您可以在图标上rt-click(top-left)选择Properties
设置字体(推荐Lucida Console 12)和height/width)
现在您已经配置了命令提示符,允许您编译文件系统中任何位置的任何文件。例如,我用您发布的代码进行了测试(我对其进行了修改以添加信息提示)。编译它是小菜一碟。我将可执行文件保存在 bin
目录中,以将源代码和二进制文件分开。
我将你的文件命名为 array_get.cpp
。
编译
然后只需输入正常的 g++
编译器命令,并且至少使用 -Wall -Wextra
选项来启用编译器警告(您可以添加 -pedantic
以及您想要的任何其他警告,我会建议至少添加 -Wshadow
这样你的编译器就会警告你在多个范围内声明的任何可能发生冲突的变量)。 -o
选项允许您指定可执行文件的位置(如上所述,我只是使用单独的 bin
目录)。所以要编译 link 你的代码到 bin\array_get.exe
我必须输入的是:
C:\Users\david\Documents>g++ -Wall -Wextra -o bin\array_get array_get.cpp
(在没有警告的情况下编译之前不要接受代码——阅读任何警告(它给出了问题行),理解它告诉你的是什么,然后去修复它)
示例Use/Output
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
就是这样。由于 MinGW 使用 gcc
,您在 windows 上使用的编译器命令与您在 Linux 中使用的完全相同,因此学习从命令行编译是值得的 double-benefit.
现在您可以使用任何 text-editor 编辑您的代码,同时您可以根据需要简单轻松地使用命令提示 re-compile 直到您的代码正确。没有项目对话框,没有混乱的每个文件的不同文件夹,只是自由地编译你想要的任何文件——直接从命令行。 (实际上,我按类型将目录中的源代码分开,例如 c、cpp),您会发现最适合您的。我还使用了一个简单的 bat
文件,它将 exename 和 source.cpp 名称作为参数,然后使用我设置的选项进行编译——它只是减少了输入 :)
此外,由于您知道编译器所在的位置以及要使用的选项,您可以在任何 IDE 上打开设置 window 并设置适当的编译器命令和编译器选项以允许吨e IDE 为您编译代码。试一试,如果您还有其他问题,请告诉我。
我正在使用 scite 文本编辑器(我不能使用任何 IDE 或编译器,因为我还需要使用 Makefile,这只有在我使用某种文本编辑器时才有可能)用于我所有的代码都是用 C++ 编写的。但是,我一直面临着同样的挑战;文本编辑器(我已经在多个编辑器上尝试过,包括键盘和 sublime text)没有从键盘读取任何输入。这是源代码:
#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 取为零,而不是设置为从键盘输入的值。它甚至不允许任何键盘输入。任何关于我如何解决这个问题的答案将不胜感激。
Hoosain,继续上面的评论,当您使用 IDE 时,您必须配置编译器的路径以及您希望使用的所有编译器选项,以及生成的可执行文件的位置和目标文件等。当您在 windows 上使用 CodeBlocks 时,您基本上很幸运,CodeBlocks 会自动检测是否安装了 MinGW 并设置其编译器配置以允许您构建和 运行 您的代码,而无需配置编译器细节。 Geany 是另一个做得很好的编辑器 auto-detecting 并且使用 MinGW。
对于剩余的 IDE,由您来配置它们以查找和使用您安装的编译器 (MinGW),以及配置所有需要的编译器选项(至少启用编译器警告-Wall -Wextra
).
这就是那些只使用过为他们 运行 配置的 IDE 的新程序员遇到问题的地方......在你告诉 IDE 你的编译器在哪里以及哪个编译器之前要使用的编译器选项,您必须知道编译器的位置并了解应该使用的最少编译器选项集。
学习使用编译器的方法是使用古老的命令行。 (是的,那是 windows 上的 cmd.exe
,在早期版本中通常被标记为 "DOS Prompt")IDE 只是编译器的 front-end,它执行相同的操作您只需在命令行中输入命令即可编译您的程序。
学习如何使用编译器将为您节省大量学习编码的时间。您可以简单地打开一个命令提示符并编译您想要的任何文件,而无需设置项目等。在学习编码时,试图将小示例硬塞进 IDE 比值得的。与其担心如何使用 IDE,不如先关注 "how to use your compiler"。
由于您在 windows 上安装了 MinGW,要能够从命令提示符进行编译,您所要做的就是将 MinGW bin
目录的路径添加到您的用户环境中。您可以通过在此处添加 PATH
作为环境变量来实现:
Start Menu-> (rt-click on Computer)-> Properties->
Advanced System Settings-> (Advanced tab)-> Environment Variables
在Topwindow(你的用户变量)中,点击添加(或编辑)PATH
"Variable name"。通常,如果您将 MinGW 安装在默认位置,只需将路径添加为 "Variable value":
c:\MinGW\bin;c:\MinGW\mingw32\bin
(验证计算机上的路径)
(注意: windows 用 semi-colon 分隔路径组件,所以如果已经有一个 PATH
变量集,只需添加a semi-colon 介于现有内容和添加内容之间。此外,如果您已经打开命令提示符,则必须关闭它并再次打开它以使新路径生效)只需打开 Start Menu-> Accessories-> Command Prompt
(您可以在图标上rt-click(top-left)选择Properties
设置字体(推荐Lucida Console 12)和height/width)
现在您已经配置了命令提示符,允许您编译文件系统中任何位置的任何文件。例如,我用您发布的代码进行了测试(我对其进行了修改以添加信息提示)。编译它是小菜一碟。我将可执行文件保存在 bin
目录中,以将源代码和二进制文件分开。
我将你的文件命名为 array_get.cpp
。
编译
然后只需输入正常的 g++
编译器命令,并且至少使用 -Wall -Wextra
选项来启用编译器警告(您可以添加 -pedantic
以及您想要的任何其他警告,我会建议至少添加 -Wshadow
这样你的编译器就会警告你在多个范围内声明的任何可能发生冲突的变量)。 -o
选项允许您指定可执行文件的位置(如上所述,我只是使用单独的 bin
目录)。所以要编译 link 你的代码到 bin\array_get.exe
我必须输入的是:
C:\Users\david\Documents>g++ -Wall -Wextra -o bin\array_get array_get.cpp
(在没有警告的情况下编译之前不要接受代码——阅读任何警告(它给出了问题行),理解它告诉你的是什么,然后去修复它)
示例Use/Output
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
就是这样。由于 MinGW 使用 gcc
,您在 windows 上使用的编译器命令与您在 Linux 中使用的完全相同,因此学习从命令行编译是值得的 double-benefit.
现在您可以使用任何 text-editor 编辑您的代码,同时您可以根据需要简单轻松地使用命令提示 re-compile 直到您的代码正确。没有项目对话框,没有混乱的每个文件的不同文件夹,只是自由地编译你想要的任何文件——直接从命令行。 (实际上,我按类型将目录中的源代码分开,例如 c、cpp),您会发现最适合您的。我还使用了一个简单的 bat
文件,它将 exename 和 source.cpp 名称作为参数,然后使用我设置的选项进行编译——它只是减少了输入 :)
此外,由于您知道编译器所在的位置以及要使用的选项,您可以在任何 IDE 上打开设置 window 并设置适当的编译器命令和编译器选项以允许吨e IDE 为您编译代码。试一试,如果您还有其他问题,请告诉我。