谁能告诉我为什么这段错误?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
它不。它应用了怪异的指针算术。您正在访问超出范围的地址,而且您无权访问。 –