我编写了一个小程序,逐行循环遍历文件。 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
在第二次工作时为什么会有所不同?我的第一个想法是,变量类型可能有所不同,但是却无济于事。我想念什么?是否有可能像第一个代码块中那样工作?
答案 0 :(得分:1)
代替
std::cout << str << "";
您应该尝试
std::cout << str << std::endl;
在所有操作系统上以正确的方式换行。