C++ 当用户输入';输入';钥匙
我一直在编写一个程序,从用户那里获取两种不同的“向量”输入,当按下enter键时停止输入。代码如下所示C++ 当用户输入';输入';钥匙,c++,string,vector,segmentation-fault,C++,String,Vector,Segmentation Fault,我一直在编写一个程序,从用户那里获取两种不同的“向量”输入,当按下enter键时停止输入。代码如下所示 #include <iostream> #include <vector> #include <string> using namespace std; int main() { vector<string> a,c; string b; int m=0;//,words = 0; do {
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> a,c;
string b;
int m=0;//,words = 0;
do
{
cin>>a[m];
m++;
}
while(cin.get()!= '\n');
int n=0;
do
{
cin>>c[n];
n++;
}
while(cin.get() != '\n');
int mida=a.size()/2, midc=c.size()/2;
int count;
int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
if(a[i] == c[j])
count++;
}
if(count >= mida || count >= midc)
cout<<"similar"<<endl;
else
cout<<"dissimilar"<<endl;
return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
载体a,c;
b串;
int m=0;/,words=0;
做
{
cin>>a[m];
m++;
}
而(cin.get()!='\n');
int n=0;
做
{
c[n];
n++;
}
而(cin.get()!='\n');
int mida=a.size()/2,midc=c.size()/2;
整数计数;
int i,j;
对于(i=0;i=midc)
cout当您创建一个对象时,它一开始是空的,它的大小将为零,其中的所有索引都将超出范围,并导致未定义的行为(以及可能的崩溃)
您可以使用将元素附加到向量
std::string s;
std::cin >> s;
a.push_back(s);
虽然以上是导致崩溃的最可能原因,但这并不是你唯一的问题。另一个问题是,每个输入字符串都可能以换行符结尾。如果你想读一整行,然后将其拆分为“单词”,那么我建议你使用阅读整行,然后使用从该行中提取单独的单词
您还可以使用轻松地将字符串从输入流转换为向量
你可以这样做
std::string line;
std::getline(std::cin, line);
std::istringstream iss(line);
a = std::vector<std::string>(std::istream_iterator<std::string>(iss),
std::string>(std::istream_iterator<std::string>());
std::字符串行;
std::getline(std::cin,line);
标准::istringstream iss(线);
a=标准::向量(标准::istream_迭代器(iss),
std::string>(std::istream_迭代器());
cin>>a[m];
您正在索引向量a
的末尾。由于该向量尚未给定大小,因此它甚至没有空间可分配a[0]
一种可能的解决方法是使用临时变量获取用户输入,然后A.push_back[input]
Try(not.)。最后同上