c++ - 如何从 C++ 文件中读取字符串和相应的 int?

标签 c++ string file-io int

我正在为一个类(class)做一个分为两部分的项目,我已经完成了第一部分,但在第二部分遇到了麻烦。对于第一部分,我能够从文件中读取列表并将其读取到 vector 中以使用各种函数进行操作。此部分的列表如下所示:

banana

apple

pineapple

grapefruit

orange

pear

grape

lime

lemon

我能够完成。对于第一部分,我只有一个字符串 vector 。但是,第二部分介绍了这些值的数量。本节的列表如下:

foo 5

bar 4

baz 2

boz 1

foo 3

在这一点上,我不确定如何将 for item 读取为字符串以及它后面的相应 int。对于重复的项目,它们应该添加到该项目的原始值中。我正计划有一个对象 vector ,它有一个名称和一个要操作的数量,但我需要先读取文件。感谢您的帮助!

这是我最初阅读文件的方式

if (fileIn.is_open()){
//file opened successfully so we are here 


    ifstream inf(fileName + ".txt");
    string word;

    while (inf >> word)
    {
        currentSet.push_back(word);
    }

最佳答案

只需执行以下操作:

map<string, int> vals; //or some other data structure
ifstream ifs(somefile);
string word;
int i;

while(ifs >> word >> i) {
  vals[word] += i;
}

只需一个接一个地阅读它们。当然你可以根据需要添加错误检查。但我推荐 map 数据结构,以便于访问和操作。

关于c++ - 如何从 C++ 文件中读取字符串和相应的 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24265706/

相关文章:

java - "if(<an integer> & 2)"是什么意思?

c++ - 声明或定义

c++ - Getline 只读取第一行(或第一行)

rust - 为什么Rust的read_to_end不能将文件读入缓冲区?

c# - 使用 Linq to XML 递归删除 xml 节点

c++ - 编译使用 SWI-Prolog 接口(interface)的 C++ 程序

ios - UInt8 XOR 数组结果到 NSString 的转换每次都返回 nil

php - 从字符串中删除特定单词

c# - 为什么: string st = "" + 12; work in c# without conversion?

尝试打开命名管道进行读取时 Python 代码挂起