从文本文件中读取特定的整数

时间:2014-03-17 03:43:12

标签: c++ file-io text-files

我有一个包含此信息的文本文件。

GO

pink colour 60 5 0

pink colour 80 10 0

chocs

red colour 100 15 1

red colour 120 15 1

man

blue colour 140 20 2

fast place

Brown colour 160 20 2

Going in plane

Green colour 280 35 5

我试图只提取每一行的第一个整数。没有任何整数的行我可以跳过。 所以我可以跳过第1行(Go) 但我需要第2行的60。 和第3行的80。 跳过第4行......等等 但我不知道怎么做。任何帮助深表感谢。谢谢。

3 个答案:

答案 0 :(得分:0)

您可以一次读取一个字符并检查该字符是否为数字。如果是,则继续阅读,直到您点击不是数字的字符。然后忽略所有内容,直到该字符为换行符。它可能看起来像:

char buff;
std::fstream fin("file", std::fstream::in);

buff = fin.getchar();

// Read until end of file
while (buff != file.EOF)
{
    // if the char we read is a digit...
    if (isdigit(buff))
    {
        // Continue to read characters if they are an integer (same number)
        while (isdigit(buff))
        {
            // Store buff in some container
        }

        // Ignore until we hit the end of that line
        fin.ignore(256, '\n');      
    }
}

答案 1 :(得分:0)

你可以这样做:

#include <iostream>
#include <sstream>
using namespace std;

... ...

string str;
while (getline(file, str)) // read each line
{
    istringstream iss(str);
    int value;
    string temp;
    if (iss >> temp >> temp >> value) // try to read the value
    {
        // you got the value here
    }
}

答案 2 :(得分:0)

伪代码:

read in a line, quit at EOF
for each line
    do a **string::find_first_of** for a digit
    if digit not found, go to read the next line
    do a **std::stoi** to convert to integer
    process the integer