如果您正在逐行輸入文件(將行讀取到字符串中進行標記化),是否應該有getline或gettream_iterator的理由。getline vs istream_iterator
回答
我有時會(視情況而定)寫了一行類,所以我可以用istream_iterator
:
#include <string>
#include <vector>
#include <iterator>
#include <iostream>
#include <algorithm>
struct Line
{
std::string lineData;
operator std::string() const
{
return lineData;
}
};
std::istream& operator>>(std::istream& str,Line& data)
{
std::getline(str,data.lineData);
return str;
}
int main()
{
std::vector<std::string> lines;
std::copy(std::istream_iterator<Line>(std::cin),
std::istream_iterator<Line>(),
std::back_inserter(lines)
);
}
getline
會讓你看到整行,而istream_iterator<std::string>
會給你單獨的單詞(用空格分隔)。
取決於你想要完成什麼,如果你問哪一個更好(標記化只是一點,例如,如果你期待一個結構良好的程序,並且你期望解釋它,可能更好閱讀整個行...)
對不起,我應該補充說,這行是逗號分隔的。所以istream_iterator
如果您不希望輸入的內容格式錯誤_EVER_,這是一件很難說的事,是的,您會得到一整行。 – dirkgently 2009-11-13 15:33:48
一行中的每個單元格也不得包含空格。 – 2009-11-13 18:29:28
- 1. istream_iterator`
- 2. istream_iterator行爲
- 3. std :: getline和eol vs eof
- 4. istream_iterator泄漏內存
- 5. 使用istream_iterator複製
- 6. istream_iterator消耗從流
- 7. vector <int> v(istream_iterator <int>(cin),istream_iterator <int>());
- 8. istream_iterator嘗試解析無效數據
- 9. 如何設置istream_iterator不忽略空行
- 10. istream_iterator:採取額外的輸入
- 11. 左值istringstream istream_iterator是否必需?
- 12. std :: getline()返回
- 13. getline問題C++
- 14. C++ getline()函數
- 15. Python getline()問題
- 16. obstack,get和getline
- 17. Getline不工作
- 18. getline的任務
- 19. C++ getline和stringstream
- 20. for loop skipping getline
- 21. Getline沒有輸入
- 22. QT getline error與MinGW
- 23. C++ EOF Getline錯誤
- 24. 函數getline問題
- 25. C++ getline cin錯誤
- 26. getline(cin.name)被跳過
- 27. getline()如何工作?
- 28. cin.ignore的getline問題
- 29. 問題與getline C++
- 30. 我如何用libC++ istream_iterator讀取文件中的0xFF?
你自己那種回答了這個問題 - 使用'getline'獲得一條線或'istream_iterator'進行標記。 – 2009-11-13 15:24:21