0

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

我们只被介绍过数组,我对指针或链表或任何更高端的东西一无所知,所以我觉得我的选择有点有限。我整天都在努力寻找一种从文本文件中获取输入并将其分配给适当数组的方法。我尝试使用 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 的第一个实例不会产生任何编译器错误,但后两个会产生。我不太确定将数据放入我的数组的另一种解决方案,所以我很茫然。任何帮助都会很棒!

4

3 回答 3

1

如果我理解正确,您在一个文件中只有三个值:一个字符串、一个 int 和一个 double。我假设它们由空格分隔。

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

std::ifstream file("input.txt");
std::string s;
if( ! (file >> s) ) {  // a single word extracted from the file
    // failure
}
int n;
// ...
于 2010-11-06T07:46:39.337 回答
0

编译器错误说明了什么?您确定错误是由 引起的getline吗?也许不是因为getline调用,而是因为i.

于 2010-11-06T08:01:35.773 回答
0

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() );;
}
于 2010-11-06T08:24:08.140 回答