getline(userfile, buffer);
new_user.birth_year = atoi(buffer.c_str());
for (stringstream s(buffer); s >> id;)
{
new_user.friends.push_back(atoi(id.c_str()));
-3
A
回答
0
這顯然是希望的格式是這樣的讀取一些數據的目的:
1992 17 3 34 9
第一個數字是出生用戶的一年。之後的數字是該人朋友的身份證號碼。
第一位(new_user.birth_year = atoi(buffer.c_str());
)讀取第一個數字並將其分配給new_user.birth_year
。
下一個循環讀取其餘數字並將它們添加到保存該用戶朋友的ID的集合(可能爲std::vector
)。輕微的可能性錯誤:它看起來像是將他們的出生年份作爲朋友的ID以及其餘的ID號碼。
1
getline(userfile, buffer);
讀取在一行文本入變量buffer
。
new_user.birth_year = atoi(buffer.c_str());
atoi
該功能需要一個C風格串。方法c_str()
返回std::string
中的C風格字符串。
atoi
函數將C樣式字符串轉換爲整數。
整數結果然後分配給new_user.birth_year
。
for (stringstream s(buffer); s >> id;)
{
的for
環,stringstream s(buffer)
的第一部分,創建從buffer
字符串的字符串流。 stringstream
允許將字符串視爲流。
s >> id
從字符串中讀取一個值並將結果放入id
。
new_user.friends.push_back(atoi(id.c_str()));
此行轉換id
字符串的整數(參見上文關於atoi
)和附加到new_user
對象內的矢量friends
的整數。
相關問題
- 1. C++有人能解釋的字符串()
- 2. 字節緩衝區,字符緩衝區,字符串和字符集
- 3. 比較緩衝區與C字符串
- 4. C#字符串數組緩衝區
- 5. 字符串緩衝區 - OutOfMemoryError
- 6. 解釋套接字緩衝區請
- 7. 如何解釋這個緩衝區溢出漏洞,用C
- 8. 緩衝區已滿時清除字符串緩衝區。這是什麼模式?
- 9. 這個字符串怎麼沒有溢出緩衝區?
- 10. 這個字符串怎麼沒有溢出緩衝區?
- 11. 字符串和字符串緩衝區內存概念
- 12. 有人解釋所有這些divs
- 13. 字節緩衝區,字符串
- 14. 字節緩衝區爲字符串GWT
- 15. 將字符串和變量寫入C中的緩衝區
- 16. 在C#字符串對象之間共享字符緩衝區
- 17. 緩衝區和Memoryview對象爲非C程序員解釋
- 18. C#.Net套接字緩衝區瞭解
- 19. 緩衝區溢出字符解析
- 20. 緩衝區比較(無新行字符)與字符串
- 21. 緩衝區不會打印字符串
- 22. 預期字符串或緩衝區
- 23. 「預期字符串或緩衝區」
- 24. 在緩衝區中查找字符串
- 25. 升壓緩衝區麻煩字符串
- 26. Java緩衝區到字符串數組
- 27. 的XMLType字符串緩衝區太小
- 28. 字符串緩衝區聲明不足
- 29. 字符串緩衝區需要幫助
- 30. 字符串緩衝區太小
@Mar:我不確定是什麼:「這些行似乎在一段時間後緩衝?」手段。如果你的意思是:「他們用過緩衝式閱讀嗎?」好的。如果別的東西......好,也許你可以澄清你想知道的。 –
緩衝的主要原因是從文件中進行小的讀操作通常會有相當多的開銷,所以通常不需要進行大量的小讀操作,而是需要執行一些大的讀操作,將數據放入緩衝區,然後從緩衝區讀取小塊。 –
@傑裏謝謝 – Mar