我有两对文件。源文件是相同的副本,除了它们所查询的相同文本文件的路径之外。 一对在Linux Cinnamon 18.x上运行,另一对在Raspbian Stretch上运行。每对都在自己的平台上编译。
std::string sTemp = ImportDS18B20("testy.txt");
if (sTemp.find("YES") != std::string::npos) {
size_t p = sTemp.find("t= ");
if (p != std::string::npos) {
p += 3;
sFloor = sTemp.substr(p);
uint uTemp = sFloor.length();
std::cout << uTemp << " |" << sFloor << "| " << std::endl;
}
break;
}
该代码在Raspbian上生成5 |19555|
,在肉桂上生成6 |19555\n|
。 ({\n
当然仅代表此站点上的CR
。)
我认为这是C ++编译器问题。那是对的吗?如何使代码可移植?
答案 0 :(得分:0)
我怀疑您的问题出在ImportDS18B20()函数上,而不是您发布的代码或编译器上。要验证文件是否相同,请检查长度和md5sum。
我会删除尾随的\ r(和\ n以使其跨平台)
sFloor = sTemp.substr(p);
while (sTemp.back() == '\r' || sTemp.back() == '\n')
sTemp.pop_back();
uint uTemp = sFloor.length();
迈克