好吧,我正在尝试删除在Linux上编译和运行程序时弹出的这些讨厌的^ M字符。
我试图运行
dos2unix filename
在文件上,^ M仍然存在。我也确定无论何时打开文件,我都会打开
ios::binary
有没有办法删除M?即使是系统调用,我可以在我的代码中调用也可以,例如
std::system("Remove M's Command");
任何反馈都会非常感激。
感谢。
答案 0 :(得分:5)
许多工具都会使用正则表达式。例如,perl可以就地编辑文件:
# perl -i -p -e 's/\r//g' FILENAME
答案 1 :(得分:1)
如果您的C ++程序的结构如下:
std::string str;
std::ifstream inputFile("file.txt", ios::binary);
while (std::getline(inputFile, str)) {
// parse str and operate on the results
}
然后您可以轻松将其更改为:
std::string str;
std::ifstream inputFile("file.txt", ios::binary);
while(std::getline(inputFile, str)) {
str.erase(std::remove(str.begin(), str.end(), '\r'), str.end());
// parse str and operate on the results.
}
答案 2 :(得分:-1)
我不确定ios::binary
是什么,但在我看来就像钥匙一样
它听起来与Apple系统有关,它们使用CR(^ M)字符而不是LF(而Windows使用两者)。因此,如果您只有CR而不是CR-LF,则dos2unix将无效。
那么为什么不删除ios::binary
(正如@Joachim-Isaksson建议的那样)?