我正在嘗試解決關於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