正在从文件中读取名字和姓氏
Reading First and Last Name from File
当我从名称中删除Jr.时,当我尝试从文件中读取时,一切都正常。如何使用此输入文件读取Smith Jr.的姓氏?我不能使用get-line,因为它将整行读取为全名,但我如何才能将姓名和姓氏分开读取,而不是导致错误?
Intro To Computer Science c++
SAL 343
JHG 344
John Adams
111223333 100 87 93 90 90 89 91
Willy Smith
222114444 90 73 67 -77 70 80 90
Phil Jordan
777886666 100 80 70 -50 60 90 100
当我将Jr.从输入文件中删除时,它会读取姓氏Smith,但当我将其放置为Smith Jr.时,它不会将其读取为姓氏,并导致巨大的打印错误。我怎么能把姓读成Smith Jr.而不是去掉它呢?非常感谢。这是我的阅读功能
void Read_Student(Student & Temp , ifstream & fin){
fin >> Temp.FirstName >> Temp.LastName ;
fin >> Temp.Id;
fin >> Temp.Quiz;
for (int i = 0 ; i < 6 ; i++)
fin >> Temp.Test[i];
fin.ignore(10,'n');
}
int Read_List(Student & Temp,Student List[], int Max_Size)
{
ifstream fin;
int i = 0;
if (Open_File(fin))
{
getline(fin, List[i].Course_Name);
getline(fin, List[i].Course_Id);
getline(fin, List[i].Course_Location);
Read_Student(List[i],fin);
while(!fin.eof())
{
i++ ;
if (i > Max_Size){
cout << "nArray is full.n" ;
break;
}
Read_Student(List[i],fin);
}
}
else
{
cout <<"nBad file. Did not open. Program terminated.n";
exit(0);
}
return (i);
}
fin >> Temp.FirstName >> Temp.LastName;
operator>>(istream&, string&)
一旦碰到空白就会停止提取。但是,您希望将该行的其余部分保存在Temp.LastName
中。在这种情况下,请使用std::getline
:
fin >> Temp.FirstName;
std::getline(fin, Temp.LastName);
fin >> Temp.Id;
/* ... snip ... */
您似乎希望将第一个单词作为名字,将其余单词作为姓氏。如果是这种情况,您可以使用getline获取整行,然后将行切碎(我可能建议使用字符串流来解析单个单词)。
或者,如果你想解析多个单词的名字和姓氏,你可以尝试在名字和姓氏之间添加一些"分隔符",比如逗号。您可以再次使用getline获取整行,然后使用逗号在名称之间进行拆分。
相关文章:
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 读取文件的最后一行并输入到链接列表时出错
- 为什么在读取文件大小时文件IO速度会发生变化
- 读取文件时运行时的未知行为
- 如何逐行读取文件,每行中的内容都用空格分隔并将其写入新文件中
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- C++ 读取文件读取文件不正确
- 读取文件并将其存储在unordered_map中时出现问题
- 读取文件时无法使用 OpenMP 获得加速
- 使用istringstearm和get行缓慢读取文件
- 如何继续读取不同功能中的文件,而不是从头开始再次读取文件?
- 读取文件时引发异常
- 从标准输入读取文件后读取用户输入
- 在读取文件后重置句柄
- 如何在C++编译时读取文件?
- std::ifstream 在读取文件中最后一项时设置 eofbit,但仅在读取数值类型时发生
- 读取文件在第二次调用时返回INVALID_HANDLE
- 通过指针读取文件
- 逐行读取文件,并将数据插入变量和数组中