所以我一直在使用这个输入文件并打败自己,因为无论我做了什么,它都无法正常显示给我。我确实弄明白了为什么会这样,但我想知道EOL(行尾)¬旁边的¤(货币符号)是什么意思,以及为什么它不是添加或删除它们很容易(¤)。我从未遇到过这个问题,或者看过任何有关它的信息,主要是因为我不知道¤到底是什么,如果我不得不猜测我会说它是某种换行或换行。也许这是xCode中那些不错的Apple漏洞之一。
更新3
输入功能:
while (!mDataFile.eof())
{
MLSInfo temp;
//mDataFile >> temp.mlsId;
mDataFile >> temp.mlsId;
mDataFile >> temp.salePrice;
mDataFile.ignore();
getline(mDataFile, temp.address);
if (!mDataFile.eof()){
list.listInsertEnd(temp);
}
}
输出功能:
DListNode* tempPtr = list.getHead();
while (tempPtr != nullptr) {
MLSInfo temp = tempPtr->dataVal ;
cout << temp.mlsId << " " << temp.salePrice << " " << temp.address << "";
tempPtr = tempPtr->nextNodePtr;
}
更新2:
下载损坏文件的链接。 https://ufile.io/jzyxx
更新1:
STRING:
00111 75000.00 123 Main Street¤¬
HEX:
30 30 31 31 31 20 37 35 30 30 30 2e 30 30 20 31
32 33 20 4d 61 69 6e 20 53 74 72 65 65 74 0d 0a
¤的UNICODE代码:
U+00A4
输出结果如何
要解决此问题,我只需重新输入输入文件即可删除所有¤。
答案 0 :(得分:2)
看起来那些浅灰色的Unicode字符是Xcode显示空白字符的方式。点是空格,箭头是换行符,所以我猜你的货币符号是回车符。
查看你的hexdump,我们看到了角色0x0d
。与ascii table相比,确认它确实是一个回车。
由于getline
的默认分隔符是换行符*,因此此回车符将直接进入您的字符串!当您稍后尝试输出该字符串时,这会影响事情。 (没有看到你的代码,很难说它为什么以它的方式打印)
这些如何进入你的文件是一个谜,没有更多的信息(在某些时候是Windows机器上的文件?),但只是从文件中删除它们应该足以解决你的问题。
*已实现我假设此处使用getline
因为如果您使用cin
运算符>>
,则会停在任何空格,包括回车。