Я пытаюсь создать вектор, который должен ввести strings (white space included)
, пока пользователь не войдет в '!'
.Создание вектора строк: C++
Ниже мой код:
#include <iostream>
#include <vector>
#include <string>
#include <iterator>
using namespace std;
int main()
{
char buffer[100];
string temp;
vector <string> vec;
while(1)//Shows Segmentation fault error while running,
//compiles succesfully
{
cout << "Enter String : ";
cin.get(buffer,100,'\n');//To ensure that whitespaces are also input
cout << "@@@@ " << buffer << endl ;//Shows correct input
cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
//Clearing cin stream for any residual characters
temp.assign(buffer);//Assigning string the input "phrase"
cout << "###" << temp << endl;//Shows correct output
if (temp == "!") //if input is '!' character do not push on the vector a
//come out of the loop
break;
vec.push_back(temp);//push on the vector
temp.assign(NULL); //flush temp string
}
vector <string>::iterator p = vec.begin();
//display thre vector
while(p != vec.end())
{
cout << *p << endl;
p++;
}
return 0;
}
Он успешно компилируется, но во время выполнения бросков Segmentation fault
ошибку.
Невозможно понять, почему? Может ли кто-нибудь указать?
Также более разумное решение для этого, оценивается вместе, указывая на то, что не так с моим кодом.
Благодаря
Просто используйте 'std :: getline' для чтения строк с пробелами. Вам не нужно навязывать ненужную максимальную длину или беспокоиться о том, что ваша длина соответствует размеру вашего буфера. – chris