gpt4 book ai didi

c++ - 使用getline解析和存储变量

转载 作者:行者123 更新时间:2023-11-28 02:58:09 26 4
gpt4 key购买 nike

我正在用 C++ 编写一个简单的基于文本的沙盒游戏,并且刚刚开始保存文件。在查看了本网站和其他网站上的一些问题后,我选择自己做,而不是使用 boost 库等。

我的保存代码工作正常,但是,我的加载代码无法正常工作!

int loadGame(string filename){
string delim=":";
string readline;

ifstream filestream;
filestream.open(filename.c_str());

while(getline(filestream,readline)){
cout << readline << endl;
stringstream linestream(readline);
string data;
getline(linestream, data, ':');
linestream >> playername >> location[0] >> location[1] >> hitpoints >> coins >> axes >> swords >> food >> maps;
}
return 0;
}

它目前正在循环,正如您所期望的那样,但随后仅将最后一个“ map ”变量存储到玩家名中。我知道 while(getline(filestream,readline)){ 是问题的原因,但作为新手,如果不添加包含大量 ifs 的循环,我看不出如何解决这个问题那做一个(伪代码)

while(n<10){
if n=1{ linestream >> playername}
if n=2{linestream >> location[0]...

在我看来这很冗长且效率低下。

示例保存可能如下所示:

playername:John
location[0]:400
location[1]:840
hitpoints:100
coins:35
axes:0
swords:0
food:0
maps:3

我知道这可能措辞不当,但我将不胜感激任何对此问题的帮助。提前致谢。ps 关于此处发布的代码的任何其他提示都很棒 :)

最佳答案

如果您刚开始使用 C++,我可以给您一些提示。

首先,不要为解析而烦恼。您可以花时间做更多有趣的事情。选择一种更简单的输入格式,例如

playername John Doe
hitpoints 300

请注意,我使用空格将值与键分开。现在您可以简单地执行以下操作:

std::string key, value;
while (<more input>)
{
input_file >> key;
std::getline(input_file, value);

if (key == "playername")
// whatever...
else if (key == "maps")
// stuff...
}

关于c++ - 使用getline解析和存储变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21529233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com