它不会打印完整的地址

时间:2013-10-18 14:34:11

标签: c++

有人可以告诉我为什么不打印我的完整地址?最终的输出是“你的名字是Syd,你住的是2845”。它为什么这样做?我在cout中清楚地说明了打印地址字符串。 (顺便说一下,我实际上输入2845 SE Taylor Street)

#include <iostream>
using namespace std;

int main()
{
    string address;
    cout << "Please enter your address." << endl;
    cin >> address;
    cout << "You live at " << address << "." << endl;
    return 0;
}

2 个答案:

答案 0 :(得分:4)

cin >> address;

这会读取一个单词,停在第一个空格字符处。阅读整行:

std::getline(cin, address);

答案 1 :(得分:2)

输入操作符读取空格分隔的值。因此,如果您的地址中有空格,那么它将只读取第一个“单词。

更糟糕的是,如果您输入您的全名,第一个输入将读取第一个名称,第二个输入将读取第二个名称。

尝试使用std::getline来阅读整行,但首先要std::cin.ignore(numeric_limits<streamsize>::max(),'\n');跳过上一个输入的换行符(或者对两个输入都使用std::getline)。