如何访问 txt 文件中的其他逗号分隔值.C++
How to access other comma separated values from a txt file. C++
ifstream f("events.txt");
if (f.is_open())
{
string l,t;
string myArray[5];
int i = 0;
while (getline(f, l))
{
getline(stringstream(l), t, ',');
cout << t << endl;
myArray[i] = t;
cout << myArray[i] << endl;
i = i + 1;
}
所以我有一个名为"events.txt"的文件,其中包含:
An angry orc hits you with his weapon!,-50
A mage casts an evil spell on you!,-20
You found a health potion!,25
An enemy backstabs you from the shadows!,-40
You got eaten by a Dragon!,-1000
到目前为止,程序的这一部分将句子打印到逗号并将其存储到数组中。我的问题是我还想以某种方式访问该数字并将其存储到另一个数组中或在事件发生时使用它,因为它将用于降低玩家 HP。
提前感谢!
一个简单的方法:
定义一个结构来存储数据:
struct Event {
std::string message;
int number;
}
(不要将这两个项目存储在单独的数组中,它们属于一起。
创建此结构的向量并向其中添加项:
std::vector<Event> events;
while (getline(f, l)) {
size_t pos = l.find(',');
Event e;
e.message = l.substr(0, pos);
e.number = std::stoi(l.substr(pos+1));
events.push_back(e);
}
但是,这假定字符串只有一个逗号。如果要更灵活,请使用std::strtok
或正则表达式。
另一个建议:将 I/O 与解析分开。不要尝试直接从输入流中读取int
等数据类型,如其中一个注释中所建议的那样。相反,读取整行或任何解析单元,然后执行解析。这使代码更具可读性,并简化了错误处理和调试。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 如何将 txt 文件中的行分隔为组件C++
- 无法通过空白将文本文件行分隔为矢量
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 在其他文件中创建类时在 c++ 项目中不起作用
- 类与私有变量的其他类之间的线程安全性
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- GlobalAlloc而不是其他分配方法
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 断言中的Fold表达式在某些计算机上编译,但在其他计算机上不编译
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 结构和双指针隐藏在其他结构中,多层混淆
- UE4在OnComponentBeginOverlap上铸造其他actor
- 如何访问 txt 文件中的其他逗号分隔值.C++
- 逗号分隔的语句被认为是完整的语句吗?(以及其他诊断问题)
- 如何在c++中读取以空格分隔的数据并将其保存到数组中,然后以其他顺序写入新的文本文件