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;
如果在单词之间输入空格,则会出现上述代码的问题。例如,如果我输入“Ampitheater Parkway”作为streetname,则将“Ampitheater”放入streetname,跳过资源名称的提示并输入“Parkway”到下一个字段。我该如何解决这个问题?
答案 0 :(得分:7)
那是因为当您使用带有字符串作为右侧的提取运算符时,它会停留在第一个空格字符处。
你想要的是getline
免费功能:
std::getline(std::cin, streetnum); // reads until \n
如果需要,您可以指定其他分隔符:
char c = /* something */;
std::getline(std::cin, streetnum, c); // reads until c is encountered
更好的是使用一点功能:
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.
:)
答案 1 :(得分:2)
您可以使用getline():
cout << "Input street number: ";
cin.getline(streetnum, 256); // Assuming 256 character buffer...
cout << "Input street name: ";
cin.getline(streetname, 256);