[英]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.