C++ 文件输入,尝试获取解压缩Int';s来自字符串(C+;+;)

C++ 文件输入,尝试获取解压缩Int';s来自字符串(C+;+;),c++,string,int,stringstream,C++,String,Int,Stringstream,嘿,伙计们,我正试图将此列表从文本文件中分离出来 15 Albert Einstein 52 67 63 Steve Abrew 90 86 90 93 David Nagasake 100 85 93 89 Mike Black 81 87 81 85 Andrew Van Den 90 82 95 87 Joanne Dong Nguyen 84 80 95 91 Chris Walljasper 86 100 96 89 Fred Albert 70 68 Dennis

嘿,伙计们,我正试图将此列表从文本文件中分离出来

15

Albert Einstein 52 67 63

Steve Abrew 90 86 90 93

David Nagasake 100 85 93 89

Mike Black 81 87 81 85

Andrew Van Den 90 82 95 87

Joanne Dong Nguyen 84 80 95 91

Chris Walljasper 86 100 96 89

Fred Albert 70 68

Dennis Dudley 74 79 77 81

Leo Rice 95

Fred Flinstone 73 81 78 74

Frances Dupre 82 76 79

Dave Light 89 76 91 83

Hua Tran Du 91 81 87 94

Sarah Trapp 83 98
转换成全名,然后是阿尔伯特·爱因斯坦,然后是他们下面的整数作为数组。

但是我不知道该怎么做

到目前为止,这就是我一直在做的事情,但它并不适合我

void Student::getData(Student * stdPtr, int len)
{
    int tempt;
    int sucker = 0;

    ifstream fin;
    fin.open("students.dat");
    fin >> tempt;

    while(!fin.eof())
    {
        string temp;
        getline(fin, temp,'\n');

        stringstream ss;
        ss << temp;
        ss >> sucker;

        cout << temp << " "<<  sucker <<   endl;
        sucker = 0;
    }
    fin.close();
}
void Student::getData(Student*stdPtr,int len)
{
诱惑;
int=0;
流鳍;
财务公开(“students.dat”);
诱惑;
而(!fin.eof())
{
字符串温度;
getline(财务,临时,'\n');
细流ss;
ss>吸盘;

getline
之后可以尝试这样的操作:

stringstream ss(temp);
string name;
string surname;
ss >> name >> surname;
int i;
while (ss >> i) {
  cout << i << ' ';
}
//follows a fast fix to manage names with three words
if (!ss.eof()) { //we tried to extract an int but there was another string
                 //so it failed and didn't reach eof
  ss.clear();    //clear the error bit set trying to extract a string to an int
  string thirdname;
  ss >> thirdname;
  while (ss >> i) {
    cout << i << ' ';
  }
}
stringstream不锈钢(温度);
字符串名;
串姓;
ss>>姓名>>姓氏;
int i;
while(ss>>i){
cout这里有一个简单的算法(太懒了,无法编写完整的代码:p)

1) 使用
fin>>temp_str
继续阅读这里的temp_str是
std::string

2) 使用
std::stoi(temp\u str)
将字符串转换为整数

如果它不是整数且是字符串,则将通过无效异常进行处理。使用此异常可:

2A)最后一个值是int:它是新对象的名称数据

2B)最后一个值不是int:它是名称的下一部分,应该附加到最后一个字符串

3) 如果未引发异常,则它是一个数字,保存在当前对象中


4) 继续阅读文件直到结束。

我只是告诉您如何从一行中分离整数和字符串。因此,您可以实现自己的一个:

#include <iostream>
#include <stdio.h>
#include <bits/stdc++.h>


using namespace std;


int main()
{
    string in;
    int i,j,k,n;

    scanf("%d",&n);

    getchar();

    for(j=0 ;j<n ;j++){



        getline(cin,in);

        stringstream ss(in);
        string tem;

        vector<string>vstring;
        vector<int> vint;

        while(ss>>tem){

            if(isalpha(tem[0]))
                vstring.push_back(tem);
            else{

                k  = atoi(tem.c_str());
                vint.push_back(k);
            }

        }

        cout<<"String are : ";

        for(i=0 ;i<vstring.size() ;i++)
            cout<<vstring[i]<<" ";

        cout<<"\nIntegers are : ";

         for(i=0 ;i<vint.size() ;i++)
            cout<<vint[i]<<" ";

            cout<<endl;

    }



    return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
串入;
int i,j,k,n;
scanf(“%d”和“&n”);
getchar();
对于(j=0;j>tem){
if(isalpha(tem[0]))
vstring.推回(tem);
否则{
k=原子(tem.c_str());
葡萄酒后推(k);
}
}

如果使用
华川都91 81 87 94,则此操作将失败。如果使用Andrew Van、Joanne Dong和华川,则此操作将失败,否则有效well@user3711771我没有注意到这三个单词的名称。有很多方法可以处理它,这里有一个快速工作的修复程序。你可以将它重新排列成更好的代码。