在C ++中输入时未检测到换行符

时间:2019-02-04 05:05:01

标签: c++

我是c ++的新手,正在尝试将字符作为输入,直到用户输入换行符为止。我的示例代码如下:

#include<iostream>
using namespace std;

main()
{
    char c;
    while(1)
    {
        cin>>c;
        if(c=='\n')
        {
             cout<<"Newline";
             break;

        }
    }

}

问题是按键盘的Enter键后循环没有中断。代码有什么问题吗?

3 个答案:

答案 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

https://coliru.stacked-crooked.com/a/69a647d668172265

答案 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; 
}