C STD :: getline / std :: Sort无法正常工作

c++ std::getline / std::sort is not working as expected

本文关键字:常工作 工作 getline STD std Sort      更新时间:2023-10-16

我制作了一个小程序,可以通过文件逐行循环。一切都可以在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第二次有所不同?我的第一个想法是,也许变量类型是不同的,但这无处可去。我想念什么?是否可以像第一个代码块中的工作一样工作?

而不是

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

您应该尝试

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

在所有操作系统上以适当的方式获取新线路。