我試過我的G ++版本的C++ 0x初始化列表實現,但它只輸出空行。爲什麼initializer_list在傳遞字符串時使用不當?
#include <initializer_list>
#include <iostream>
#include <string>
int main() {
std::initializer_list<std::string> a({"hello", "stackoverflow"});
for(auto it = a.begin(), ite = a.end(); it != ite; ++it)
std::cout << *it << std::endl;
}
我不知道我做錯了什麼。任何人都可以幫我嗎?
這將打印字符串' 「你好」'太:http://ideone.com/C9Q7p -.- – 2011-04-09 14:51:10
@Johannes:如果您刪除'c_str()',它不會打印'「你好」':http://ideone.com/NTRUh ...我很困惑。它有什麼問題? – Nawaz 2011-04-09 14:57:58
這是因爲你正在引用局部變量(當函數返回時超出了範圍)。當你使用c_str()時,你只是幸運的(或者不幸的,取決於觀點),內存仍然包含對char *字符串的引用,並且堆區還沒有被覆蓋。 :) – Vitus 2011-04-11 19:15:38