#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;
}
}
代码有点混乱,输出不对主要是逻辑不太顺