我在矢量中有一个字符串变量,它获取一个字符串。
#include <vector>
#include <string>
using namespace std;
vector <string> buffer;
main(int argc, char *argv[]){
buffer[0] = "foobar";
return 0;
}
它会导致这个庞大的命令行编译器错误,该错误始于:
WinMainCRTStartUP的多重定义...
然后错误继续大约500行不连贯的东西。 我用这个编译器(GNU编译器)成功编译了其他C ++程序。我不知道为什么这个特定的程序会导致错误。
答案 0 :(得分:0)
有两个问题。首先,您需要将返回类型添加到main:
int main() {
...
}
二。你有一个空的缓冲区,所以当你正在做缓冲区[0] =“任何东西”时你会破坏内存(后来当另一个函数访问被破坏的对象时可能会发现)。发生这种情况是因为vector []未被检查为vector。如果您将其更改为:
int main() {
buffer.at(0) = "foobar";
return 0;
}
你会得到一个例外。