我不確定哪個向量導致錯誤或問題來自何處。我試圖從一個文件輸入名字和生日,並將它們設置爲向量中的一部分。該文件是:我的程序返回錯誤「矢量下標超出範圍」。
Mark,12/21/1992
Jay,9/29/1974
Amy Lynn,3/17/2010
Bill,12/18/1985
Julie,7/10/1980
Debbie,5/21/1976
Paul,1/3/2001
Ian,2/29/1980
Josh,10/31/2003
Karen,8/24/2011
我甚至不知道如果我的代碼完成這個,因爲錯誤。我試圖閱讀更多的stringstream,但我不明白如何正確實現它。所提及的日期類可以在必要時提供,但時間很長。任何有關改進方案的意見以及爲什麼會發生這個問題,我們都非常感謝。 這裏是我的代碼:再次
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include "c://cpp/classes/Date.cpp"
using namespace std;
struct person {
vector<string> name; // One name string vector
vector<Date> birthdate; // One birthdate vector
vector<Date> birthday; // birthday vector
};
int main() {
string input, input2; // Two string inputs
const int PEOPLE_NUM = 10; // Amount of people
vector<person> People(PEOPLE_NUM); // Define vector called People with 10 positions
string test;
ifstream inputFile("C:/Users/Taaha/Documents/CMSC226/Project 3/Names.txt", ios::in);
for (int i = 0; i < PEOPLE_NUM; i++) {
getline(inputFile, input, ','); // input the line, stop when a comma
People[i].name[i] = input; // Add input into the vector
getline(inputFile, input2, ',');
People[i].birthdate[i] = input2;
cout << i;
}
inputFile.close(); // close file
Date birthday;
for (int i = 0; i < PEOPLE_NUM; i++) {
Date birthday(People[i].birthday[i].getDay(), People[i].birthday[i].getMonth(), Date().getYear());
People[i].birthday[i] = birthday;
} // Not finished yet, but turns birthdate into birthday
return 0;
}
感謝:]
偏題:而不是有'vector's的結構,而是考慮結構的vector。很可能會簡化您的代碼。 – user4581301
您正在訪問尚不存在的索引(又名'vector.name [i]')。您必須使用'push_back()'或'emplace_back()'爲您想要放入矢量的東西創建插槽。另外,我幾乎可以肯定你在'struct person'中濫用向量。除非人們突然開始有不止一個生日,否則很可能你不想在「人」中出現媒介。 –
好的,你認爲我得到的問題是從那裏來的嗎? – Cool