我有一个包含此信息的文本文件。
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行......等等
但我不知道怎么做。任何帮助深表感谢。谢谢。
答案 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