请问为什么用vector<char*>不能输出正确的值?

#include
#include
#include
#include
using namespace std;

int main()
{
vector s;
char a[10]={0};
//int a;
char c;
int x=0;
while(cin>>a)//.get(c))
{
x++;

s.push_back(a);

//if(c=='\n')

// {
// break;
// }
cout< if(x>=3)break;
}

for(int i=0;i<s.size();i++)
{
    cout<<s[i]<<endl;   
}

}
我想输入 a b c然后输出a b c但是只能在while循环里正确输出,在for里面就变成了c c c?求解

 while(cin>>a[x])

s.push_back(a[x]);

因为数组是事先开辟好的,pushback进去的是数组的地址,所以无论你怎么改输入的内容,都是把一个相同的东西存进去

敢把下标带上吗? 你输入的时候 一句 s.push_back(a) 算什么? 还有这while(cin>>a) 。a是一个常量指针,你还没有移位操作,就算输出的答案是对的也是瞎猫碰死耗子。

在while循环里重新new一个数组

 #include <iostream>
#include <vector>
#include <algorithm>
#include<iterator>
using namespace std;

int main()
{
    vector<char*> s;
    char a[10]={0}; 
    //int a;
    char c;
    int x=0;
    while(cin>>a)//.get(c))
    {
        x++;        
        char *b = new char[10];
        strcpy(b, a);
        s.push_back(b);

        cout<<s[x-1]<<endl;
        if(x>=3)break;
    }

    for(int i=0;i<s.size();i++)
    {
        cout<<s[i]<<endl;   
    }

}

代码有点混乱,输出不对主要是逻辑不太顺