如何更改此C++代码以使输入更好地工作

neu*_*cer 3 c++ user-input g++

        cout << "Input street number: ";
        cin >> streetnum;
        cout << "Input street name: ";
        cin >> streetname;
        cout << "Input resource name: ";
        cin >> rName;
        cout << "Input architectural style: ";
        cin >> aStyle;
        cout << "Input year built: ";
        cin >> year;
Run Code Online (Sandbox Code Playgroud)

如果您在单词之间输入空格,则会出现上述代码的问题.例如,如果我输入"Ampitheater Parkway"作为streetname,则将"Ampitheater"放入streetname,跳过资源名称的提示并输入"Parkway"进入下一个字段.我怎样才能解决这个问题?

GMa*_*ckG 7

那是因为当您使用带有字符串作为右侧的提取运算符时,它会停留在第一个空格字符处.

你想要的是getline免费功能:

std::getline(std::cin, streetnum); // reads until \n
Run Code Online (Sandbox Code Playgroud)

如果需要,您可以指定其他分隔符:

char c = /* something */;
std::getline(std::cin, streetnum, c); // reads until c is encountered
Run Code Online (Sandbox Code Playgroud)

更好的是使用一点功能:

void prompt(const std::string& pMsg, std::string& pResult)
{
    std::cout >> pMsg >> ": ";

    std::getline(std::cin, pResult);
}

prompt("Street Number", streetnum);
prompt("Street Name", streetname);
// etc.
Run Code Online (Sandbox Code Playgroud)

:)