如何在同一行中使用具有多个变量的 getline()
How to use getline() with multiple variables in the same line?
我正在尝试从文件中读取每一行并将数据存储在每一行中。假设该行是"x y z"。getline 函数应该使用哪些参数来分别读取和存储 x、y 和 z?
void readData(Gene *data, int num)
{
int codeNum;
int i = 0;
int k = num;
ifstream inputFile;
inputFile.open("example.data");
inputFile >> codeNum;
while(i < k){
getline(inputFile, data[i].geneCode, data[i].MutCode[0],
data[i].MutCost[0], data[i].MutCode[1],
data[i].MutCost[1]);
i++;
}
这就是我所拥有的。请注意,我尝试读取的所有变量都是字符串,k 是行总数。尝试编译时,我收到一个错误,说"没有匹配的函数可以调用 getline(("和关于"候选函数模板不可行"的内容。知道我做错了什么吗?
我强烈建议您使用结构(或类(向量,而不是多个并行数组。
struct Mutation_Code_Cost
{
Mutation_Code_Type MutCode;
Mutation_Cost_Type MutCost;
};
struct Gene
{
Gene_Code_Type geneCode;
Mutation_Code_Cost mutation_info[2];
};
然后,您可以重载operator>>
以从文本流中读取结构:
struct Mutation_Code_Cost
{
Mutation_Code_Type MutCode;
Mutation_Cost_Type MutCost;
friend std::istream& operator>>(std::istream& input, Mutation_Code_Cost& mcc);
};
std::istream& operator>>(std::istream& input, Mutation_Code_Cost& mcc)
{
input >> mcc.MutCode;
input >> mcc.MutCost;
return input;
}
struct Gene
{
Gene_Code_Type geneCode;
Mutation_Code_Cost mutation_info[2];
friend std::istream& operator>>(std::istream& input, Gene& g);
};
std::istream& operator>>(std::istream& input, Gene& g)
{
input >> g.geneCode;
input >> g.mutation_info[0];
input >> g.mutation_info[1];
return input;
}
您可以像这样从文件中读取:
std::vector<Gene> database;
Gene g;
std::string record;
while (std::getline(input_file, record))
{
std::istringstream record_stream(record);
if (record >> g)
{
database.push_back(g);
}
}
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 我的 c++ 程序似乎没有发现字符串和我拥有但输入使用 getline 的变量之间的比较
- getline 将行的所有内容从 CSV 打印到一个变量
- C++ getline(cin,变量)行为不端.网站上没有任何解决方案有帮助
- 如何在同一行中使用具有多个变量的 getline()
- C++ 读取文件和写入变量时未处理的异常 - getline 错误?
- C ++ getline 将行的不同部分放入变量中
- C++ 在 switch 语句中,cin.getline 不会分配给 c 字符串变量
- 如何使用 std::getline 来匹配预期的输入并读取变量部分
- 使用getline解析和存储变量
- 从字符串流到模板变量的Getline
- 无法删除 txt 文件中 getline(cin , (变量)) 之后的下一行
- 当我使用 getline( ) 时变量未正确读取
- C++ - 在 getline 中使用变量作为变量名称
- 使用getline将字符串传递给对象,而不使用额外的字符串变量
- Getline 不会从变量中读取字符串。(C++)
- 将getline()字符串拆分为多个int和char变量
- Getline()结合cin.ignore()不存储变量?(错误)
- 从getline中获取2个字符串变量