我正在尝试创建一个简单的程序(hello.cpp),它使用getline
以测试文件的形式获取用户输入,然后将其打印出来。
代码如下所示:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char ** argv) {
string name;
cout << "What is your name?" << endl;
getline(cin, name);
cout << "Hello " << name << "!" << endl;
return 0;
}
我正在使用的测试文件(test.txt)如下所示:
|
|
|John
|Doe
|
忽略垂直线,我只是把它们放在那里代表换行符
我试图让getline
忽略制表符和换行符,只读取文本文件中的内容只是一个字符串。
我想要的输出如下:
$./hello < test.txt
What is your name?
Hello John Doe!
我得到的是这样的:
$./hello < test.txt
What is your name?
Hello !
答案 0 :(得分:0)
虽然我不同意你在这里采取的方法,但这是我如何解决你当前的问题:
由于test.txt
中的名称分为多行,因此您必须继续使用getline
,直到没有更多输入为止。因此,您应该使用以下代码而不是单个getline
语句:
string input;
while (getline(cin, input))
{
name += input;
}
这将读取文件中的每一行,并将其添加到名称中,同时忽略空格(无论如何都没有)和换行符(表示行的结尾)。
输出:
$./hello < test.txt
What is your name?
Hello JohnDoe!
在名字和姓氏之间添加一个空格应该是微不足道的,但是我想说你应该忽略空格。