首页 > 解决方案 > 如何从文本文件中动态提取负数和正数?

问题描述

我在文本文件中获得了一行,例如:

XCoordRange=0-8

现在这很容易,我可以做一个简单的ifstream并将其读入 astring line并继续映射和转换

第 [12] 行至int x1

和线[14]到int x2

这样,我可以将值解析为我的x1x2坐标。

但是,当出现不同的情况时,事情会变得棘手,例如:

XCoordRange=-10--5(均为负数)

XCoordRange=-10-5(一负一正)

XCoordRange=10--5(一正一负)

所以我的问题是如何将不同场景中的数字动态映射到我的x1and中x2

好像我只能读取一种类型的数据(负或正),而不是两者(负和正)。

以下是我迄今为止尝试过的:

    string line = "XCoordRange=-10-5";  
    size_t pos = 0;     
    string token;   
    string delimiter = "=";

    if(pos = line.find(delimiter) != string::npos)
    {
                    token = line.substr(0, pos);
                    line.erase(0, pos + delimiter.length());
    }

这给了我一个输出-10--5,但是,我陷入了下一步应该做的事情。

标签: c++parsingsplit

解决方案


您可以使用istringstream定义<sstream>如下

// if line is "-10--5"
std::istringstream iss(line);
int n1, n2;
iss >> n1; // read first number ("-10")
iss.ignore(); // ignore the '-' character
iss >> n2; // read the second number ("-5")

推荐阅读