Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как сделать cin>>string, но с пробелами?


Автор: BuBu 15.2.2004, 20:46
Здавствуйте! У меня тут проблема, с считыванием с потока символьной строки. Известно, что cin не читает пробелов, и по сему советуется использовать get() или getline(). Второе мне не подходит, поскольку у меня строка произвольной длины, но разделитель известен. С scanf тоже возникают некоторые проблемы. Я сам после некоторого времени решил ету задачу так:
#include<string>
#include<iostream>
using namespace std;

int main()
{
char x;
string a;
bool c = true;

while©
{
cin.get(x);
if(x != '\n')
a = a + x;
else
c = false;
}
// получаю то что нужно в а;

return 0;
}

А есть более "красивое" решение? Зарание большое спасибо.
P.S. Не знаю почему но с "copy" тоже не получилосьsmile.gif

Автор: Unregistered 15.2.2004, 21:23
каков должен быть результат?

Автор: BuBu 16.2.2004, 14:19
Например если набираем "Hello world", и каким то образом сохраняем ето в нашем string a, то после cout<<a<<endl; должно получиться на консоле следующее:
Hello world
Hello world
Press any key to continue...
Попытался выразиться как можно яснееsmile.gif

Автор: BuBu 16.2.2004, 17:33
Снова всем приветsmile.gif Я тут еще одно решение нашел, немножко "покрасивее", но жаль что из ввода надо выйти с двумя Enter-ами. Не смотря не на что представляю вам его, может заинтересует, хотя изначальный вопрос все таки остается открытым. Жду новых идей...
#include<iostream>
#include<string>
using namespace std;

int main()
{
cout << "Please enter a line:\n";
string s;
getline(cin,s);
cout << "You entered " << s << '\n';
return 0;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)