我正在尝试解决关于spoj的问题。显然输入行按照注释结尾为\r\n
。我从以前的问题中得知关于\r\n
的是它的一个窗口事物。我想知道的是如何考虑它。目前我在C++中使用getline(cin,str)
。我该怎么做才能考虑到\r\n.
考虑到 r n
0
A
回答
4
当您使用std::getline(std::cin, str)
的'\n'
已经照顾:直到它找到一个'\n'
并插入到这些str
std::getline()
将读取字符。但是,它不插入'\n'
。
因此,您可能会在字符串末尾卡住'\r'
。如果你在Windows上,你可以在文本模式下打开你的文件,这个流也会解压缩它们。如果这不是要走的路,你可以判断你str
与'\r'
结束并删除它:
if (!str.empty() && str[str.size() - 1] == '\r') {
str.erase(str.end() - 1);
}
如果你想删除所有回车(也有可能,在理论上,一些嵌入式的字符串),你可以使用
str.erase(std::remove(str.begin(), str.end(), '\r'), str.end());
最后,如果你不希望永远遇到回车,你可以创建一个过滤流缓冲区,只是删除所有'\r'
(或只是那些从"\r\n"
序列)。下面是一个简单的例子,说明如何实现一个简单的过滤流缓冲区:
#include <algorithm>
#include <iostream>
#include <streambuf>
#include <string>
class crfilter
: std::streambuf
{
std::istream* stream;
std::streambuf* sbuf;
char buffer[8];
int underflow() {
std::streamsize n;
while (this->gptr() == this->egptr()
&& (n = this->sbuf->sgetn(buffer, 8))) {
char* end = std::remove(buffer, buffer + n, '\r');
this->setg(buffer, buffer, end);
}
return this->gptr() == this->egptr()
? std::char_traits<char>::eof()
: std::char_traits<char>::to_int_type(*this->gptr());
}
public:
crfilter(std::istream& in): stream(&in), sbuf(in.rdbuf(this)) {}
~crfilter() { stream->rdbuf(this->sbuf); }
};
int main()
{
crfilter filter(std::cin);
std::string str;
while (std::getline(std::cin, str)) {
std::cout << "str='" << str << "'\n";
}
}
0
相关问题
- 1. 考虑到DST
- 2. n /(log(n))是否考虑多项式时间?
- 3. 为什么SQL Server考虑N'和N'相等?
- 4. 绘图功能没有考虑情节类型考虑中的R语言
- 5. 排序考虑的情况下考虑
- 6. 转换RGBA到RGB考虑背景考虑
- 7. 计算选择的开始和结束的索引不考虑“\ r \ n \”在IE
- 8. clearTaskOnLaunch但考虑到这个
- 9. 考虑到时间差异
- 10. 考虑搬迁到Trac
- 11. TargetApi没有考虑到
- 12. 基于R处理CSV IF((可乐= COLB)考虑到评估COLC
- 13. 设计考虑
- 14. 设计考虑
- 15. Java Math.random()考虑
- 16. 考虑JPQL
- 17. 考虑订婚
- 18. 性能考虑
- 19. UISlider不考虑
- 20. TimeZoneInfo.ConvertTimeFromUtc不考虑DST
- 21. MySQL - 在考虑LIMIT
- 22. Python re.sub考虑慢?
- 23. bash uniq考虑换行符
- 24. 不考虑条件
- 25. 不考虑位置
- 26. uitableviewcells,设计考虑
- 27. 考虑使用PHP
- 28. setSearchDisplayController考虑private-API?
- 29. 其考虑以下
- 30. 考虑使用Firebase
您想如何“考虑它们”? – lurker
@mbratch在如何摆脱它,并存储在一个字符串对象的行 – ishan3243