при попытке использовать getline в цикле независимо от n дает ввести строку только один раз. помогите исправить.
int n;
cin >> n;
string s;
for(int i = 0; i < n; i++)
{
getline(cin,s);
}
Проблема в том, что считывание продолжается в той же строке, в которой было считано n
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
cin.ignore();
string s;
for(int i = 0; i < n; i++)
{
getline(cin,s);
cout << s<<endl;
}
}
Чуть выше была указана одна из ошибок, но я бы делал немного по-другому... К тому же, у вас ещё несколько нюансов по коду (хоть и не критичных - дело, скорее вкуса и оформления).
#include <iostream>
using namespace std;
int main(int argc, const char * argv[])
{
int n;
string s;
cout<<"input number: "<<flush;
cin>>n;
for(int i=1; i<=n; i++)
{
cout<<"input string: "<<flush;
cin>>s;
cout<<"string No. "<<i<<": "<<s<<"\n\n";
}
cout<<endl;
return 0;
}
Мой код отрабатывает без проблем. Добавил cout
-ы для наглядности. Их можно убрать без вреда для кода.
Во-первых, при инициализации цикла, я бы в первичное выполнение записал i=1
и в условие добавил i<=n
, потому что это выглядит немного логичнее. Вместо getline()
, я бы просто делал cin>>s
. Ну а смысл? Хотя, если гуру С++ меня поправят и дадут объяснение - что ж, буду благодарен за науку. :)
А вот в конце кода у @koshachok есть фундаментальная ошибка. Функция main()
должна возвращать значение! Это правильно. Да, компилятор это может сделать и за вас. Но доверять всё компилятору - дурной тон. Поэтому я добавил return 0;
, чтобы сообщить, что программа отработала без ошибок. Передача аргументов в main()
тоже может выполняться компилятором вместо пользователя, но я уже упоминал, что доверять компилю - дурной тон.
Опять же, это моё личное мнение. Я в С++ новчиок, поэтому готов выслушать адекватную (и главное обоснованную) критику. Я готов признавать свои ошибки. :)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как известно, ideone компилирует исходники на Си++ в utf8Однако, мне нужна строка в utf16 (wstring)
В программе предусмотрен ввод ФИОЯ не знаю как реализовать, так, что бы вводилось иванов иван иванович, а на выходе получалось Иванов И
Здраствуйте, как правильно поставить критическую секцию в такой функции?