[英]C++ data packing from uchar to int (both positive and negative numbers)
[英]How to dynamically extract both negative and positive numbers from a textfile?
我在文本文件中获得了一行,例如:
XCoordRange = 0-8
现在这很容易,我可以执行一个简单的ifstream
并将其读取为string line
然后继续进行映射和转换
第[12]行到int x1
和line [14]到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
的输出,但是,我陷入了下一步的工作。
您可以按以下方式使用在<sstream>
定义的istringstream
// 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")
size_t equalPos = line.find("=");
size_t dashPos = line.find("-", equalPos + 2);
int x1 = stoi(line.substr(equalPos + 1, dashPos - equalPos - 1));
int x2 = stoi(line.substr(dashPos + 1));
当然,如果你不知道该串line
将始终与给定的模式,那么你需要添加一些检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.