현재 "가변 함수"를 사용하고 문자열 벡터에 4 개의 이름을로드 한 다음 인쇄하려고합니다. 내가 'int'형식으로 이것을 사용하고 숫자를 사용하면 잘 작동하지만 문자열 벡터를 사용할 때 오류가 발생합니다."벡터 첨자가 범위를 벗어났습니다."오류가 발생했습니다.
#include "stdafx.h"
#include<cstdio>
#include<cstdarg>
#include<string>
#include<vector>
#include<iostream>
using namespace std;
int count;
vector<string> namesVector;
void names(int count, ...)
{
va_list namesList;
int i; // for loop
va_start(namesList, count);
for (i = 0; i < count; i++)
{
string currentElement;
currentElement = va_arg(namesList, string);
namesVector[i] = currentElement;
}
va_end(namesList);
}
int main()
{
int nameCount = 4;
names(nameCount,"jon", "maggie", "joan", "alfred");
for (int i = 0; i < nameCount; i++)
{
cout << "Name at element " << i << " is: " << namesVector[i] << endl;
}
}
그것은 소리. 좋은 디버거를 사용하면 한 줄씩 프로그램을 실행하고 예상 한 곳에서 벗어난 곳을 볼 수 있습니다. 프로그래밍을 할 때 필수적인 도구입니다. 추가 읽기 : ** [작은 프로그램을 디버깅하는 방법] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** –
시간을 투자하는 것이 좋습니다. 'std :: vector'가 어떻게 동작하는지 (http://en.cppreference.com/w/cpp/container/vector). – caps