所以我在这里有这个代码:
std::cout << "Here's Question 2 now for " << char(156) << "200" << endl;
Sleep(2000);
PlaySound(TEXT("Millionaire/£100Play.wav"), NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);
std::cout << "In maths, which of these numbers is not referred to as a square number?" << endl;
Sleep(2000);
std::cout << "A: 0" << endl;
Sleep(2000);
std::cout << "B: 1" << endl;
Sleep(2000);
std::cout << "C: 2" << endl;
Sleep(2000);
std::cout << "D: 4" << endl;
Sleep(2000);
answerQues2:
std::cout << "So, A, B, C or D?";
std::cin >> answer2;
if (answer2 == "C" || answer2 == "c")
{
std::cout << "That's correct, you've won " << char(156) << "200!" << endl;
PlaySound(TEXT("Millionaire/£100correct.wav"), NULL, SND_FILENAME);
Sleep(2000);
}
现在,代码本身不是问题。这本质上是一个问题,然后是4个答案(A,B,C和D)的测验。现在,为了真正解决更多问题,您必须自己进入代码并经历漫长的过程来编辑所有内容。我想创建一个文本文件,您可以编辑文本文件中的问题和答案,从而替换代码中的所有内容(例如,如果我想更改Q1,我可以打开文本文件,替换问题,何时我加载程序,问题将被更改)。我怎么能这样做?
答案 0 :(得分:3)
这是一个完整的解决方案,但您必须填写现有代码的其余部分。我个人使用下面的函数GetFileLines将文件中的行加载到向量中。这种方式易于使用。我花时间将它改编为char / string,因为这是你正在使用的,虽然我默认为wstring / wchar_t。
#include <string>
#include <vector>
#include <fstream>
#include <iostream>
#include <Windows.h>
using namespace std;
bool FileExists(const std::string& name) {
FILE * file;
errno_t result = fopen_s(&file, name.c_str(), "r");
if (result == static_cast<errno_t>(0)) {
fclose(file);
return true;
}
else {
return false;
}
}
std::vector<std::string> GetFileLines(std::string filePath)
{
vector<string> lines;
if (!FileExists(filePath))
return lines;
ifstream input(filePath);
if (!input.is_open() || input.fail())
return lines;
string line;
do {
std::getline(input, line);
lines.push_back(line);
} while (!input.eof() && !input.fail() && !input.bad());
if (!input.eof() && (input.fail() || input.bad()))
throw exception("GetFileLines failure");
return lines;
}
int wmain() {
vector<string> quizLines = GetFileLines("c:\\quiz.txt"); // replace with path to your file
if (quizLines.size() == 5) {
string question = quizLines[0];
string answer1 = quizLines[1];
string answer2 = quizLines[2];
string answer3 = quizLines[2];
string answer4 = quizLines[2];
// Your code begins here
std::cout << "Here's Question 2 now for " << char(156) << "200" << endl;
Sleep(2000);
PlaySound(TEXT("Millionaire/£100Play.wav"), NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);
std::cout << question << endl;
Sleep(2000);
std::cout << "A: " << answer1 << endl;
// Rest of your code with changes to use answer# variables should follow
}
else {
std::cout << "Could not load quiz from external file. Cannot continue." << endl;
}
}
我建议您阅读一些我不熟悉的标准库元素的文档。这些链接中的任何一个,按照最常见的用法排序,可能对您有用:
http://www.cplusplus.com/reference/string/string/
http://www.cplusplus.com/reference/vector/vector/
http://www.cplusplus.com/reference/fstream/ifstream/
并且不要注意评价一个诚实问题的人。有些人出生在这个世界上似乎正在做倒立。
而且,记录中,这是一个非常简单的问题。为什么?不是因为这是一个愚蠢的问题,而是因为想象一下尝试访问文件内容的必要性。因此,如果你问一个基本问题,比如我如何获得该文件内容,你应该期待很多快速的完整答案,因为在我的情况下,它们应该在手边。当然,可以通过在线搜索找出它,虽然要弄清楚你应该阅读的文档并不总是很容易。