假设您输入的文件是在您阅读它的同一平台上生成的。
然后,您只需在文本模式下打开文件,就可以将 LTS(在这种情况下,它看起来像 '\r\n')转换为 '\n':
std::ifstream testFile(inFileName);
您可以使用以下remove_copy
算法删除特定字符:
std::vector<char> fileContents;
// Copy all elements that are not '\n'
std::remove_copy(std::istreambuf_iterator<char>(testFile), // src begin
std::istreambuf_iterator<char>(), // src end
std::back_inserter(fileContents), // dst begin
'\n'); // element to remove
如果您需要删除不止一种类型的字符,您需要创建一个仿函数并使用remove_copy_if
算法:
struct DelNLorCR
{
bool operator()(char x) const {return x=='\n' || x=='\r';}
};
std::remove_copy_if(std::istreambuf_iterator<char>(testFile), // src begin
std::istreambuf_iterator<char>(), // src end
std::back_inserter(fileContents), // dst begin
DelNLorCR()); // functor describing bad characters