簡體   English   中英

在C ++中,std :: cin對象在哪里定義?

[英]In C++, where is std::cin object defined?

在C ++中,istream對象std::cin在頭文件<iostream>聲明,但它在哪里定義?

如果定義的內容不是標准規定的,那完全取決於實施。

這是我的地方:

$ nm -C /usr/local/lib64/libstdc++.so.6 | grep -w cin
0000000000305900 B std::cin

您正在使用的實現以某種形式提供它們。 關於它們在運行時的位置的具體細節是實現定義的,但是它們的訪問是標准定義的。 它們的生命和行為同樣由標准定義:

C ++11§27.4.1(2)

構造對象並在第一次構造類ios_base :: Init的對象之前或期間的某個時間建立關聯,並且在任何情況下在main開始執行之前建立關聯。 294程序執行期間不會銷毀對象。 295在翻譯單元中包含<iostream>的結果應該好像<iostream>定義了具有靜態存儲持續時間的ios_base::Init的實例。 類似地,整個程序應該表現得好像至少有一個具有靜態存儲持續時間的ios_base::Init實例。

在由編譯器驅動程序自動鏈接到可執行文件的庫中(例如g++clang++ )。

它是一個類istream的對象。 因此,當您使用cin您只需創建一個istream類型對象。 它具有外部鏈接和靜態持續時間。

標准輸入流是由環境確定的字符源。 通常假設是從外部源輸入,例如keyboardfile

作為類istream的對象,可以使用提取運算符( operator>> )將字符檢索為格式化數據,也可以使用諸如read成員函數作為無格式數據檢索字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM