所以我现在已经解决了这个问题好几个小时了,我想得到一些帮助。我明天有一个节目。基本上,我有一个输入文件,其中包含名字和姓氏,然后是四个浮点数。它看起来像这样:
John W.
Smith
78.8 56.5 34.5 23.3
Jane
Doe
34.5 23.4 35.7 87.0
No
More
我需要将名字和姓氏读成一个指针数组。到目前为止,我只是试图在每一行读取变量“name”,我输出到一个文本文件,看看我是否正在正确读取数据。不幸的是,它在读取浮点数后停止,它不会在下一个名称中读取。
char *newPtr;
char *nameList[50] = {0};
char name[15];
int i = 0;
infile.getline(name, 15);
while (strcmp (name, "No") != 0)
{
newPtr = new char[15];
strcpy(newPtr, name);
nameList[i] = newPtr;
infile.getline(name, 15);
outfile << name << endl;
i++;
}
到目前为止,输出刚刚出现:
John W。
史密斯
78.8 56.5 34.5 23.3
编辑:循环当前是无限的,但从我的输出中,我知道我还没有真正处理过第二个名字,我停在第一个数字。如果我能得到一些帮助,那就太好了!我非常局限于我可以使用的功能,我确信我应该在这里使用getline函数,我不能使用任何花哨的东西。
在她的幻灯片中,我的老师在此处提供了此代码,以帮助我们阅读姓名:
char *newPtr;
char *NameList[6] = {0};
char Name[20];
int a = 0;
infile.getline(Name, 20);
while(strcmp(Name, sentinel) != 0)
{
newPtr = new char[20];
strcpy(newPtr,Name);
NameList[a++] = newPtr;
infile.getline(Name,20);
}
我们还没有接受过有关弦乐的教学,我确信我不能使用我们在课堂上没有谈过的内容。感谢所有评论过的人的帮助。
答案 0 :(得分:0)
你快到了...主要的是你忘了尝试阅读数字。下面的代码会将其读入w
,x
,y
和z
,但会忽略它们......您应该对它们执行任何操作,例如:可能为姓氏创建第二个数组,为浮点数创建第三个二维数组,或者为一维数组创建4倍长的数据....
char *nameList[50] = {0};
char name[15];
int i = 0;
while (infile.getline(name, sizeof name) && strcmp(name, "No") != 0)
{
char* newPtr = new char[sizeof name];
strcpy(newPtr, name);
nameList[i] = newPtr;
double w, x, y, z;
if (infile.getline(name, sizeof name) && infile >> w >> x >> y >> z)
outfile << name << endl;
else
{
std::cerr << "missing rest of data for " << nameList[i] << " found\n";
exit(EXIT_FAILURE)
}
i++;
}