我在文本文件中获得了一行内容,例如:
XCoordRange=0-8
现在这很容易,我只需做一个简单的ifstream
并将它读取到一个string line
,然后继续映射和转换。
line12到int x1
从line14到int x2
。
这样,我就能够将这些值解析到我的x1
和x2
坐标中。
然而,当出现不同的场景时,情况就变得棘手起来,例如:
XCoordRange=-10--5 (均为负) XCoordRange=-10-5 (一个为负,一个为正) XCoordRange=10-5(一个为正,一个为负)
因此,我的问题是如何将不同场景中的数字动态映射到我的x1
和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
的输出,但是,我仍然停留在下一步应该做的事情上。
发布于 2019-07-26 17:48:09
可以使用在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")
https://stackoverflow.com/questions/57224730
复制相似问题