我从c ++开始,我只是做一个迷你游戏,我想打开我的file.txt,其中包含:
Hello
Test
Random
Mysterious
Nice
Good
Uber
Facebook
etc...
在我的代码中,我在变量中添加了一个词:
RandName
所以我怎么能打开一个file.txt,在我的文件中随机插入一个字并插入我的游戏中。我想我必须使用ofstream,但我真的不知道如何使用它。
代码:
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
using namespace std;
string Shake(string str){
string melange;
int i(0);
while (str.size() != 0){
i = rand() % str.size();
melange += str[i];
str.erase(i, 1);
}
return melange;
}
int main(){
std::cout << "Welcome to secret word : ";
string RandName("Random");
string Reponse("");
string RandNameShake("");
int cpt(0);
int lose(10);
int Replay(0);
srand(time(0));
std::cin >> Reponse;
while (RandName != Reponse && lose != 0) {
RandNameShake = Shake(RandName);
std::cout << "Wrong word ! " << '\n';
std::cout << endl << "The secret word is : " << RandNameShake << endl;
std::cout << "HIT : " << lose << '\n';
std::cout << endl << "Try again : ";
std::cin >> Reponse;
cpt++;
lose--;
}
if (lose == 0 ) {
std::cout << endl << "Sorry you don't find the word ... " << '\n';
std::cout << endl << "The word was : " << RandName <<'\n';
std::cout << endl << "An other game ? 1/Yes 2/No" << '\n';
std::cin >> Replay;
}
else
std::cout << endl << "Good Game yu find the word in " << cpt << " hits" << endl;
std::cout << endl << "An other game ? 1/Yes 2/No" << '\n';
std::cin >> Replay;
if (Replay == 1) {
main();
}
else if (Replay == 2) {
std::cout << "All right see you soon :) !" << '\n';
return 0;
}
else
std::cout << "Don't understand i close the program" << '\n';
return 0;
return 0;
}
答案 0 :(得分:0)
这听起来很像家庭作业,所以我会为你留下代码并限制一般方向的答案。
我想我必须使用ofstream
再试一次。 ofstream
顾名思义就是输出,在这种情况下你需要的是输入。
获取一个随机单词 - 一个效率低下的本机解决方案将涉及计算行/单词的数量,随机选择一个并跳过前直到达到它。然而,这涉及许多可以避免的不必要的操作。
另一种解决方案,以不同的方式效率低下,将涉及将所有单词读入容器并随机选取单词容器中的索引。但是,如果您要进行大量随机选择,那么该解决方案可能会更有效率。
对于单个单词,最好随机选择文件中的位置并向前搜索,直到找到下一个新行,并从该位置读取一行。如果你没有找到一个到达终点,这意味着该位置恰好位于最后一行,所以你需要返回,直到找到第一个新行,它将代表文件中的最后一行并读取它。
在任何一种情况下,您最终都会以最小的开销随机选择一个单词。