なぜpush_backが意図したとおりに動作しないのですか?それはベクトル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回だったので、実行するまでは正常だったと想定していました。
問題を再現できるものを提供してください。 –
あなたの 'printList'があなたが最小限のコードで示した' while'ループであれば、それは単なる間違っています。また、ベクトルの長さが変更されたかどうかを実際に確認することはありません。 – UnholySheep
番号100がどこにでもハードコードされないように、コードをリファクタリングします。 'STRING'を空に初期化し、' push_back'を使用して先頭から追加します。 'STRING'はマクロのように見えるので、変数の名前を' strings'に変更してください。ループ状態では 'eof'を使用しないでください。そして、最後に 'using namespace std;'を避けてください。ああ、 'printf'の代わりに' std :: cout'を考えてみましょう。 –