c++ - 从文件中读取名字和姓氏

标签 c++

当我从名称中删除 Jr. 并尝试从文件中读取时,一切正常。如何使用此输入文件读取姓氏 Smith Jr.?我不能使用 get line,因为它会将整行读取为全名,但我如何读取姓名和姓氏分开,姓氏是 Smith Jr. 而不是导致错误?

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 ... */

关于c++ - 从文件中读取名字和姓氏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20449153/

相关文章:

c++ - 关于带 switch 的 do-while 语句

c++ - Qt音乐播放器: mini player mode

c++ - DEBUG_NEW 和 __FILE__ 有什么用?

c++ - 尝试构建示例代码时出现编译错误

c++ - 为什么动态分配的数组大小在插入时是初始数组的 2*size,而不是 size+1?

c++ - 如何将一个类的函数添加到同一个类的另一个函数内的重载解析列表中?

c++ - ffmpeg 错误 - 未定义整体

c++ - 无法使用在同一类中使用成员函数的线程进行编译

c++ - C 与 C++ 中的 Typedef 结构

c++ - 如何使用省略尾随 '\0' 的字符串文字初始化 std::array<char, N>