繁体   English   中英

在C ++中使用getline的多个实例

[英]Using multiple instances of getline in C++

我一直在为C ++进行类分配,我们需要从文本文件获取输入并将这些值分配给数组。...一个是字符串,第二个是int,第三个是双精度。

我们只是被介绍给数组而已,我对指针或链表或任何高端东西一无所知,所以我觉得我的选择有些局限。 我已经整天努力寻找一种从文本文件中获取输入并将其分配给适当的数组的方法。 我尝试使用getline读取输入文件并设置分隔符以分隔每个数据,但是当我尝试多次使用它时出现错误。 从我读到的内容来看,这与我如何重载该函数有关,但是我在解决它方面无所适从。 我已阅读的所有解释都超出了我目前的熟悉程度。 现在,我专注于这段代码:

for (int i = 0; i < EMP_NUM; i++) // Get input from text file for names.
    getline(inFile, nameAr[i], '*');

for (int i = 0; i < EMP_NUM; i++) // Input for hours.
    getline(inFile, hoursAr[i], '*');

for (int i=0; i < EMP_NUM; i++) // Input for hourly rate.
    getline(inFile, hrateAr[i], '*');

我试图使用getline三次,并将数据写入三个单独的数组,然后稍后使用它们进行一系列计算,并将其输出到另一个文本文件。 getline的第一个实例不会产生任何编译器错误,但是后两个实例会产生。 我不太确定将数据放入数组的另一种解决方案,所以我很茫然。 任何帮助将是巨大的!

如果我理解正确,则文件中只有三个值:字符串,整数和双精度型。 我认为它们由空格分隔。

如果是这样,则您不需要std::getline() 而是使用提取运算符:

std::ifstream file("input.txt");
std::string s;
if( ! (file >> s) ) {  // a single word extracted from the file
    // failure
}
int n;
// ...

编译器错误怎么说? 您确定错误是由getline引起的吗? 也许不是因为getline调用,而是因为i的多个声明。

1)代替三个不同的迭代,只使用一个

2)在getline中传递字符串对象而不是指针

string buf;
for (int i = 0; i < EMP_NUM; i++) // Get input from text file for names.
{
    getline(inFile, buf, '*');
    nameAr[i] = buf;
    getline(inFile, buf, '*');  //assuming delimiter is again *
    hoursAr[i] = atoi(buf.c_str() );  //C way to doing it...however in c++ u have to use stringstreams....
    getline(inFile, buf);
    hrateAr[i] = atof(buf.c_str() );;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM