爲什麼push_back無法正常工作?很困惑,爲什麼它不與下面vector push_back無法正常工作C++
using namespace std;
void addItem(vector<string>& STRING, string item)
{
STRING.push_back(item);
}
int main()
{
string item;
vector<string> STRING(100);
ifstream myFile;
myFile.open("food.txt");
if (myFile.is_open()) //code where I store my data into the array
{
int i = 0;
while (!myFile.eof())
{
getline(myFile, STRING[i]);
i++;
}
}
myFile.close();
cin >> item;
addItem(STRING, item);
int x = 0;
while(!STRING[x].empty()) //code to print the current array
{
cout << STRING[x];
printf("\n");
x++;
return 0;
}
}
我當前的代碼的工作有什麼錯我是如何初始化我的數組?因爲當我使用CodeBlocks時,有0個錯誤和0個警告,所以我認爲它很好,直到我運行它。
請提供一個[MCVE],我們可以重現該問題。 –
如果您的'printList'是您在最小代碼中顯示的while循環,那麼這顯然是錯誤的。此外,你從來沒有真正檢查矢量的長度是否發生了變化,所以你怎麼確定它沒有? – UnholySheep
重構您的代碼,使得數字100在任何地方都不被硬編碼。將'STRING'初始化爲空,並使用'push_back'從頭開始添加。將該變量重命名爲'strings',因爲'STRING'看起來像一個宏。在循環條件下不要使用'eof'。最後,避免使用名稱空間標準;哦,考慮'std :: cout'而不是'printf'。 –