从无组织的文本文件中读取整数

时间:2013-06-09 17:26:49

标签: c++ fstream

#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;
        }
    }
}

假设文本文件是这样的:

100200300 Glass
Oven 400500601

我的目标只是从该文本文件中读取整数并在控制台中显示它们。 所以输出应该像

100200300
400500601

你可以在上面看到我的尝试。作为输出我只得到整数的最后一位。这是一个示例输出:

0
1

2 个答案:

答案 0 :(得分:1)

简单地尝试使用字符串流将字符串读取转换为int,如果失败则不是整数,否则它是整数。

 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();


    }

答案 1 :(得分:0)

我认为以下内容应该做你想要的(未经测试的代码):

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;
  }
}