【发布时间】:2018-01-26 15:29:04
【问题描述】:
可能这个问题已经被问过了,我已经找到了类似的主题,但我仍然无法解决我的问题。 我有一个由 IDL 生成的数据文件,其中包含整数和浮点值。我想用 C++ 读入这个数据文件。 到现在为止我做了什么:
fstream prjfile;
prjfile.open("fileName", ios::in|ios::ate);
if (prjfile.is_open() == false) {
std::cout << "Cannot open project file\n";
}
else {
std::vector <char> memPrj(0);
std::cout << "project size" << prjfile.tellg() << std::endl;
int sizePrj;
sizePrj = prjfile.tellg();
//store all values of the file in memPrj vector
memPrj.resize(sizePrj);
prjfile.seekg(0, std::ios::beg);
prjfile.read(&memPrj[0], sizePrj);
//now change the integer values to int
vector<int> mask;
//store the values in the mask vector
mask.push_back(memPrj[0] - '0' + 48);
mask.push_back(memPrj[1] - '0' + 48);
mask.push_back(memPrj[2] - '0' + 48);
}
这样我得到了值
memblockPrj[0] - '0' + 48 = -112
memblockPrj[1] - '0' + 48 = 0
and memblockPrj[2] - '0' + 48 = -112
虽然值应该是:144,257, 144
有人知道我的错误在哪里吗? 数据的其余元素是浮点值。如何将 char 值转换为浮点数?
提前致谢!
【问题讨论】:
-
是的,你是对的,已经有很多类似的问题了。在互联网上搜索“StackOverflow c++ 读取文件逗号分隔”。
-
IDL=?在这种情况下
-
" 我已经找到了类似的主题,但我仍然无法解决我的问题" 是的,在不知道您对它们到底有什么困惑的情况下,我们无法可靠地提供帮助您无需重复现有的 20,000 个答案,也不会进一步加深您的理解。然后是下一个人的 20,001。请更清楚地说明您在现有指南中没有了解的内容。
-
你为什么要减去
'0'并加上48?我相信 48 是'0'的 ASCII 值。