我是c ++的新手,正在尝试将字符作为输入,直到用户输入换行符为止。我的示例代码如下:
#include<iostream>
using namespace std;
main()
{
char c;
while(1)
{
cin>>c;
if(c=='\n')
{
cout<<"Newline";
break;
}
}
}
问题是按键盘的Enter键后循环没有中断。代码有什么问题吗?
答案 0 :(得分:2)
默认情况下,所有使用重载>>
运算符的输入都会跳过任何类型的空格。如果要读取空白,请使用std::noskipws
操纵器(或设置适当的流标志)。
答案 1 :(得分:2)
我认为这对您有用:
{% with post.game_set.all|first as game %}
<img src="{{ game.url }}" />
{% endwith %}
但是,您似乎想做的是“一次处理一行”数据。已经有一个功能:
def get_context_data(self, **kwargs):
context = super(TitlePostListView, self).get_context_data(**kwargs)
context['game'] = get_object_or_404(Game, title=self.kwargs.get('title'))
return context
答案 2 :(得分:0)
getline 选项。 getline是c ++中提供的标准库函数,用于从输入流中读取字符串或行。
语法: istream&getline(istream&是,string&str);
是-它是istream类的对象。
str-这是目标变量,存储输入。
示例程序:
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string str;
cout << "Please enter your name: \n";
getline (cin, str);
cout << "Hello, " << str ;
return 0;
}
获取多行输入。例如,下面的程序可用于获取四行用户输入。
// A simple C++ program to show working of getline
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string str;
int t = 4;
while (t--)
{
// Read a line from standard input in str
getline(cin, str);
cout << str << " : newline" << endl;
}
return 0;
}