我试图打印一个简单的输入,不同之处在于它最后有一个换行符

问题描述

int main(int argc,const char * argv[]) {

    string input;
    getline(cin,input);
    
    for (int i = 0; i < 3; i++)
        cout << input << endl;
    
    return 0;
}

输入:

Hello,World! (with a new line in the end)

输出

Hello,World!
Hello,World!

何时应该:

Hello,World!

Hello,World!

解决方法

std::getline()包含了换行符,它不属于返回的std::string值的一部分。

std::endl输出单个换行符,然后刷新输出。这就是为什么您得到看到的输出的原因:

Hello,World!<line break>
Hello,World!<line break>

因此,只需编写两个换行符即可,例如:

std::cout << input << std::endl << std::endl;

或者:

std::cout << input << '\n' << std::endl;

或者:

std::cout << input << "\n\n" << std::flush;

然后您将获得所需的输出:

Hello,World!<line break>
<line break>
Hello,World!<line break>
<line break>