![](/img/trans.png)
[英]C++ How do you read in a file word by word (strings) but display it exactly like the text file
[英]How do you read a word in from a file in C++?
所以我觉得无聊,决定做一个刽子手游戏。 当我第一次参加 C++ 时,我在高中时做过这样的作业。 但这是在我还没有学过几何之前,所以不幸的是我在它的任何形状或形式上都做得不好,学期结束后我一怒之下把所有东西都扔掉了。
我正在寻找一个 txt 文档,然后输入一大堆单词(即:测试爱饥饿的混乱混乱的馅饼尴尬你明白了)
所以这是我的问题:如何让 C++ 从文档中读取随机单词?
我感觉需要#include<ctime>
以及srand(time(0));
获得某种伪随机选择...但我对如何从文件中获取随机单词并没有最迷惑...有什么建议吗?
提前谢谢!
这是一个粗略的草图,假设单词由空格(空格、制表符、换行符等)分隔:
vector<string> words;
ifstream in("words.txt");
while(in) {
string word;
in >> word;
words.push_back(word);
}
string r=words[rand()%words.size()];
用于字符串的运算符 >> 将从 stream 中读取 1 个(空白)空格分隔的单词。
所以问题是你想在每次选择单词时读取文件还是要将文件加载到 memory 然后从 memory 结构中选择单词。 没有更多信息,我只能猜测。
从文件中选择一个单词:
// Note a an ifstream is also an istream.
std::string pickWordFromAStream(std::istream& s,std::size_t pos)
{
std::istream_iterator<std::string> iter(s);
for(;pos;--pos)
{ ++iter;
}
// This code assumes that pos is smaller or equal to
// the number of words in the file
return *iter;
}
将文件加载到 memory 中:
void loadStreamIntoVector(std::istream& s,std::vector<std::string> words)
{
std::copy(std::istream_iterator<std::string>(s),
std::istream_iterator<std::string>(),
std::back_inserter(words)
);
}
生成随机数应该很容易。 假设你只想要psudo-random。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.