极其简单的代码带来的悲伤
Grief with Extremely Simple Code
我遇到的问题可能是代码块的问题,但我只想仔细检查一下,看看是否有人看到我的代码有问题。我已经认为这与while循环有关。我一直收到一个"Main.exe已停止工作"的错误。I、 就我个人而言,在选择选项之间有很多困难,所以我试图制作一个快速而肮脏的C++程序,在几个给定的选项之间随机选择一个选项。这是我的代码:
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
cout << "Enter Options to choose between." << endl << endl;
int i;
string option;
do {
cin >> option[i];
i++;
}
while (cin != "done");
cout << option[ rand() %i ];
}
这个程序(带有嵌入的注释)应该做你想做的事情。
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::string;
using std::vector;
我使用了一个要从std
命名空间导入的名称的显式列表,因为我不知道那里定义了哪些其他名称(可能有1000多个),而且我真的只需要这几个。
int main()
{
std::srand(std::time(NULL));
上面的语句初始化了随机数生成器,所以在程序的每次运行中不会得到相同的"随机"数。
cout << "Enter options to choose between, an empty line to finish:n";
我把你的"done"
改成了一个空字符串,因为这样更容易打字。此外,此处不需要std::endl
。您应该编写"n"
,它更短,在大多数情况下是等效的。
vector<string> options;
这些是迄今为止输入的所有选项。每个选项都是一个string
,而vector
可以容纳许多元素,因此这些元素是许多字符串。
for (string option; std::getline(cin, option) && option != ""; ) {
options.push_back(option);
}
此代码读取选项。变量option
仅用于读取选项。在那之后,就不再需要它了。for
循环会自动限制option
变量的范围,因此它只能在for
循环中使用。
我还将cin >> option
更改为getline(cin, option)
,以允许使用包含空白的选项。
cout << "You entered the following options:n";
for (std::size_t i = 0; i < options.size(); i++) {
cout << "* " << options[i] << "n";
}
cout << "Your random option is " << options[std::rand() % options.size()] << "n";
}
您读取的是每个cin的字符串,而不是字符,所以您的字符串不是您想要使用的。
std::vector<std::string> options;
...
string in;
cin >> in;
options.push_back(in);
所以这里使用一个字符串向量,而不是单个字符串,然后用字符串填充它。
相关文章:
- 我的简单if-else语句是如何无法访问的代码
- 当无法使用模板和宏时,生成类型变体C++代码的最简单方法是什么?
- 如何在没有函数的情况下编写此代码并使C++更简单?
- 一个非常简单的win32套接字代码,但工作错误
- boost::spirit--试图编译大多数简单代码的编译器错误
- 奇怪的 G++ 错误,带有关于左值和赋值的简单代码
- 运行简单的.oct文件时Octave崩溃,我的代码出了什么问题?
- 为什么 for 循环只接受这个简单代码中的最后一个字符串?
- 一个简单的 win32 多线程代码.这能行吗?
- 为什么括号在这个简单的代码中会有所不同
- 这段简单的代码有什么问题?
- 如何在C++编写简单的启动代码?
- 使用简单的 Indy 服务器代码进行访问冲突
- C++11 中的随机数:有没有一种简单的方法可以将生成器种子放在代码的一个位置,然后在不同的函数中使用它?
- C++ 使用简单的代码同时写入文件和控制台输出
- 程序告诉我初始化在编写简单的C ++代码时不需要初始化的变量
- 请解释为什么这个简单的C++(Qt)代码如此奇怪
- 需要帮助识别简单多线程代码中的错误
- 我写了这个简单的代码,应该计算一系列数组元素的最高数量,但结果很奇怪
- 代码简单