简体   繁体   中英

Reading integers from an unorganized text file

#include <iostream>
#include <fstream>
#include <string>
#include <cctype> // isdigit();
using namespace std;
int main()
{
    ifstream fin;
    fin.open("Sayı.txt");
    while (!fin.eof()){
        string word;
        int n;
        fin >> word;  //First i read it as a string.
        if (isdigit(word[0])){ //checks whether is it an int or not
            fin.unget(); //
            fin >> n;  // if its a int read it as an int
            cout << n << endl;
        }
    }
}

Suppose the text file is something like this:

100200300 Glass
Oven 400500601

My aim is simply to read integers from that text file and show them in console. So the output should be like

100200300
400500601

You can see my attempt above.As output i get only the last digit of integers.Here's a sample output:

0
1

Simple just try converting the string read to an int using string streams, if it fails then it isn't an integer , otherwise it is an integer.

 ifstream fin;
    istringstream iss;
    fin.open("Say1.txt");

    string word;
    while (fin>>word )
    {

        int n=NULL;        
        iss.str(word);

        iss>>n;

        if (!iss.fail())
        cout<<n<<endl;

        iss.clear();


    }

I think the following should do what you want (untested code):

int c;
while ((fin >> std::ws, c = fin.peek()) != EOF)
{
  if (is_digit(c))
  {
    int n;
    fin >> n;
    std::cout << n << std::endl;
  }
  else
  {
    std::string s;
    fin >> s;
  }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM