簡體   English   中英

究竟是如何工作的?

[英]Exactly how range for works?

我正在讀關於“范圍for ”語句,當我弄糊塗了它是如何工作的准確。

下面是一個將字符串轉換為大寫的程序。

string s("Hello World!!!");

//convert s to uppercase

for( auto &c :s )  // for every char in s
   c= topper(c);   //  c is a reference,so the assignment changes the 
                   //  char in s
cout<< s << endl;

字符串(即c )的引用如何將元素更改為upppercase?

我已經搜索了迭代如何在這里工作,但我找不到答案。

這段代碼

for (auto& c : s)
{
    c = toupper(c); 
}

粗略地翻譯成這個

for (auto it = std::begin(s); it != std::end(s); ++it)
{
    auto& c = *it;
    c = toupper(c);
}

這是一個基本的迭代器循環,涵蓋在任何初學C ++書籍中。


cppreference有一個更詳細和准確的解釋

“c”不是普通變量,它充當字符串中每個元素(字符)的代理(或引用)。

通過更改“c”,您實際上正在更改“c”所指的值。

暫無
暫無

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

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