gpt4 book ai didi

c++ - 将文本文件中的字符串和整数输入变量

转载 作者:太空宇宙 更新时间:2023-11-04 16:21:23 25 4
gpt4 key购买 nike

嘿,有没有可能有一个文本文件,其内容是:

Weapon Name: Katana
Damage: 20
Weight: 6

是否可以将这些信息位分配到武器类的成员变量中?。这样当我在我的 main 中调用 getWeaponName 时我会得到 Katana?

我环顾谷歌,我可以获得整个文本文件输入,但它没有分配给任何变量。

我目前的代码是:

Weapons :: Weapons()
{
this->weaponName = "";
this->damage = 0;
this->weight = 0;
}

Weapons :: Weapons(string weaponName,int damage,int weight)
{
this->weaponName = weaponName;
this->damage = damage;
this->weight = weight;
}

void Weapons :: getWeapon()
{
ifstream myfile ("Weapons\\Katana.txt");
string line;
if (myfile.is_open())
{
while (myfile.good())
{
getline (myfile,weaponName,'\t');//This line gets the entire text file.
//getline (myfile,damage,'\t');
//getline (myfile,weight,'\t');
//myfile >> weaponName;
//myfile >> damage;
//myfile >> weight;
cout << weaponName<< "\n";
}
myfile.close();
}

else
{
cout << "Unable to open file";
}
}

提前致谢。

最佳答案

改变

getline (myfile, weaponName, '\t');

getline (myfile, weaponName);

你的版本正在做的是告诉getline获取文件中的所有内容,直到一个制表符,我猜你没有任何制表符。我推荐的版本 - 没有指定分隔符 - 将使字符最多换行。所以它应该读入 Weapon Name: Katana .

那么你还需要提取“武士刀”。假设你的输入文件有一个非常固定的格式,你可以简单地做一些像

weaponName = weaponName.substr(weaponName.find_first_of(':') + 2);

这将获取从“:”之后位置 2 开始的子字符串。

编辑

使用 weaponName不完全适合您的 getline 语句。 weaponName是一个字符串,但此时,您只是在寻找一条线。您已经在 getWeapon() 中设置了适当的变量.我们只需要使用它们:

void Weapons ::  getWeapon()
{
ifstream myfile ("Weapons\\Katana.txt");
string line;
string number;
if (myfile.is_open())
{
while (myfile.good())
{
getline (myfile,line);
weaponName = line.substr(line.find_first_of(':') + 2);
getline (myfile,line);
number = line.substr(line.find_first_of(':') + 2);
damage = atoi(number.c_str());
getline (myfile,line);
number = line.substr(line.find_first_of(':') + 2);
weight = atoi(number.c_str());
cout << weaponName<< "\n";
}
myfile.close();
}
else
{
cout << "Unable to open file";
}
}

注意:您需要 #include <stdlib.h>对于 atoi去工作。

老实说,这仍然不是很可靠。其他人为您提供了更好的解决方案来查看输入以查看数据是什么,以及读取和存储所有数据,但这应该向您展示最基本的知识。

关于c++ - 将文本文件中的字符串和整数输入变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16302358/

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