誰能告訴我爲什麼這段錯誤?C++向量的字符串段錯誤
vector<string> vec;
for (int i = 0; i < 1000000; /* 1 million */ i++) {
vec.push_back("string"+i);
}
編譯在g++
與-std=c++14
誰能告訴我爲什麼這段錯誤?C++向量的字符串段錯誤
vector<string> vec;
for (int i = 0; i < 1000000; /* 1 million */ i++) {
vec.push_back("string"+i);
}
編譯在g++
與-std=c++14
由於潘塔-REI正確地指出,它看起來像你想包含的字符串形式
"string" + string form of (i)
但你實際上在做指針算術我這在這種情況下是不合邏輯的(你只是傳遞了一個從某個位置遞增的指針i
- 誰知道那個內存中有什麼?)。
爲了做你想做的事,你可以使用std::to_string
,它會將i
翻譯成合適的C++字符串。加上一個C風格的字符串,is OK。
你行更改爲
vec.push_back("string"+to_string(i));
vector<string> vec;
for (int i = 0; i < 1000000; i++) {
vec.push_back("string" + to_string(i));
}
這不是PHP ...
或JavaScript或Perl,或... –
@KyleStrand哈哈,你真的讓我 –
你覺得呢' 「字符串」 + i'實際上呢? –
@πάνταῥεῖ連接 – iPherian
它不。它應用了怪異的指針算術。您正在訪問超出範圍的地址,而且您無權訪問。 –