int i,j;
std::string s;
std::cin>>i>>j>>s>>s>>i;
std::cout<<i<<" "<<j<<" "<<s<<" "<<i;
問題 參照上面的示例代碼,什麼是顯示輸出如果有輸入字符串是:「5 10示例Word 15 20」?一個問題關於給std :: cin
答案是
15 10字15
我的問題是,什麼是對CIN超過寫現有值下劃線政策?後者是否會覆蓋前一個?還有其他情況嗎?
我查了很多書,但沒有找到解釋這個的書。
int i,j;
std::string s;
std::cin>>i>>j>>s>>s>>i;
std::cout<<i<<" "<<j<<" "<<s<<" "<<i;
問題 參照上面的示例代碼,什麼是顯示輸出如果有輸入字符串是:「5 10示例Word 15 20」?一個問題關於給std :: cin
答案是
15 10字15
我的問題是,什麼是對CIN超過寫現有值下劃線政策?後者是否會覆蓋前一個?還有其他情況嗎?
我查了很多書,但沒有找到解釋這個的書。
std::cin >> i >> j >> s >> s >> i;
等同於:
std::cin >> i;
std::cin >> j;
std::cin >> s;
std::cin >> s; // overwrite previous s
std::cin >> i; // overwrite previous i
你從CIN到變量每次讀取,該變量的原有內容被覆蓋。
所以你明確要求覆蓋s
和i
。
當你對s重寫時,你破壞了先前的s值。 (這是SAMPLE)。我之所以保持不變的原因是因爲我的價值是/保持了15(你仍然覆蓋了我;但是,你用相同的數據覆蓋了它,15)。
>>
表示如果你改寫它作爲operator>>()
它看起來很醜,但可能會幫助您瞭解函數調用的工作方式。
此行
std::cin >> i >> j >> s >> s >> i;
相當於
std::cin.operator>>(i).operator>>(j).operator>>(s).operator>>(s).operator>>(i);
和operator>>()
爲cin
返回到自身的引用cin
。因此,每一步都是對的operator>>()
的單獨調用,保證按從左到右的順序進行。
從原來的問題,'給出的輸入字符串是:「5 10 Sample Word 15 20」'。 'i'輸出相同值的原因是'i'在輸出之間不會改變;即'cout << i << ...'i'在寫作之間不會改變'i'的值。 – atk 2009-12-27 05:46:11