坚持从文本文件中删除"r"!C++
Stuck with removing " " from text files! C++
好的,所以我几乎完成了一个程序。然而,虽然它可以在Windows上运行,但我更愿意在我的Mac上运行它来测试性能差异(我的Mac有更快的硬件)。
我有一个无序列图,它存储在文本文件中的值中,我也在复制此映射以反转键/值对。
文本文件不断添加新行,从研究中我发现这是因为 Windows 添加了它自己的回车符(为什么?!),并且它位于我地图中每个第二个元素的末尾。该文件是"stringx,stringy",因此我使用stringstream将字符串x和y拆分为键/值对。
编辑:感谢您的回答,伙计们,请客!
这不是
std::string::replace
的工作方式,您应该在此处阅读它的工作原理。
为了进行基本的替换,您可以编写自己的函数来执行此操作,但是在您的情况下,这似乎是一个修剪问题,因为回车符通常位于字符串的右侧。
您可以通过执行以下操作来删除回车符和新行:
std::string& rtrim(std::string& str) {
size_t endpos = str.find_last_not_of("rn");
if(endpos != std::string::npos) {
str.substr(0,endpos+1).swap(str);
}
return str;
}
在某些实现(如 Windows)上,当您打算传递""时,使用读取模式"r"或写入模式"w"将导致读取/写入"\r"。使用"wb"或"rb"。对于iostream函数,我相信你需要传入ios::binary标志。
Windows 使用"\r"结束行。通常,应该在各种平台上运行的程序使用一些#ifdef
来处理类似的差异。
我想我现在明白问题是什么了。这不是关于处理代码的差异 - 您实际上是在尝试在非Dos/Windows机器上使用" DOS/Windows"文件 - 您需要使用dos2unix
来修复文件上的行尾!
相关文章:
- 将数组的地址分配给变量并删除
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C/C++编译器通常会删除重复的库吗
- 从链接列表c++中删除一个项目
- C++如何通过用户输入删除列表元素
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 使用函数"remove"删除重复元素
- 如何从多映射中删除特定的重复项
- 运算符C++ "delete []"仅删除 2 个前值
- 删除指向指针的指针是运行时错误吗
- 将指针设置为"nullptr"并不能防止双重删除?
- 为什么示例代码访问IUnknown中已删除的内存
- 如何通过 getter 函数删除矢量的元素?
- 从控制台中删除最后打印的元素
- C++中的线程安全删除
- 如何从存储在std::映射中的std::集中删除元素
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数