C ++ std :: getline / std :: sort无法按预期工作

时间:2019-02-25 08:46:41

标签: c++ std

我编写了一个小程序,逐行循环遍历文件。 UNIX行尾一切正常:

 std::ifstream file(filename);
 while (std::getline(file, str))
 {
   std::sort(str.begin(), str.end());
   std::cout << str << ""; ----- WORKS as expected
 }

使用DOS行结尾时,std::getline不返回任何行。因此,更多的试用结束错误让我开始思考,也许应该在“”处定界。那行得通:

std::ifstream file(filename);
while (std::getline(file, str, ' '))
{
  std::cout << str << ""; -- returns a line 
  std::sort(str.begin(), str.end());
  std::cout << str << ""; ----- does not work like the first time
}

第二次尝试正常打印出一行,但是当输入该行进行排序时,它出乎意料地工作。所以我的问题是,std::sort在第二次工作时为什么会有所不同?我的第一个想法是,变量类型可能有所不同,但是却无济于事。我想念什么?是否有可能像第一个代码块中那样工作?

1 个答案:

答案 0 :(得分:1)

代替

std::cout << str << "";

您应该尝试

std::cout << str << std::endl;

在所有操作系统上以正确的方式换行。