我有一个简单的程序,该程序应该包含一个输入文件,其中包含名字和姓氏,然后是各种整数。我希望能够将名称的前两个字符串写入自己的变量,并将其余的整数写入自己的数组中。我已经进行了代码设置,将字符串读入自己的变量,但是当我尝试将整数写入自己的数组时,我得到前两个字符串的无限循环。这是代码。
int main()
{
std::string first_name,last_name;
int scores_tem[20];
int i=0;
std::ifstream filen ("input.txt");
if (filen.is_open())
{
while(!filen.eof())
{
filen >> first_name >> last_name;
for(i;i<20;i++)
{
filen>>scores_tem[i];
}
}
}
}
答案 0 :(得分:0)
此解决方案是在不允许使用getline的条件之后制定的,并且两个名称之后的整数数始终为20.此解决方案不是非常通用,我不喜欢它,但它确实工作
#include <string>
#include <iostream>
#include <fstream>
int main()
{
std::string first_name, last_name;
int scores_tem[20];
int i = 0;
std::ifstream filen("input.txt");
if (filen.is_open())
{
while (!filen.eof())
{
filen >> first_name >> last_name;
for (i = 0; i < 20; i++)
{
filen >> scores_tem[i];
}
std::cout << first_name << " " << last_name;
for (auto &k : scores_tem)
std::cout << " " << k;
std::cout << std::endl;
}
std::cin.get();
}
}
找到另一个解决错误输入事件的解决方案。
#include <string>
#include <iostream>
#include <fstream>
int main()
{
std::string first_name, last_name;
int scores_tem[20];
int i = 0;
std::ifstream filen("input.txt");
if (filen.is_open())
{
while (true)
{
if (!(filen >> first_name)) break;
if (!(filen >> last_name)) break;
for (i = 0; i < 20; i++)
{
if(!(filen >> scores_tem[i])) break;
}
if(!(filen.get())) break;
std::cout << first_name << " " << last_name;
for (auto &k : scores_tem)
std::cout << " " << k;
std::cout << std::endl;
}
std::cin.get();
}
}
答案 1 :(得分:0)
int
main(int argc, char* argv[]) {
std::string last_name, first_name;
std::vector<int> scores;
int tmp;
std::ifstream filen ("input.txt");
while (filen >> first_name >> last_name) {
scores.clear();
for (int i = 0; i < 20; i++)
{
filen >> tmp;
scores.push_back(tmp);
}
std::cout<< first_name << " " << last_name << std::endl;
}
}
所以我就这样做了。该程序接受一个参数int main(int argc, char* argv[])
。然后我创建了两个字符串,一个用于名称的每个部分,另一个用于int类型的分数。我为读入的内容创建了一个临时整数位置。
然后我从input.txt中打开了文件流,然后进行了一个while循环。 while循环参数是这样的,当我首先读取第一个名称然后是第二个名称时,我清除了先前的矢量数据。然后我创建了一个for循环来运行其余的数字20次,指定下一个读入的整数放入得分矢量。
最后,当我通过while循环时,我输出每个人的名字和姓氏。希望这有助于其他人。