C++ 如何更改此C++;使输入工作得更好的代码 cout>streetnum; 街道名称; cout>rName; cout>aStyle; 年份;

C++ 如何更改此C++;使输入工作得更好的代码 cout>streetnum; 街道名称; cout>rName; cout>aStyle; 年份;,c++,g++,user-input,C++,G++,User Input,如果在单词之间输入空格,则会出现上述代码的问题。例如,如果我在streetname中输入“Ampitheater Parkway”,那么它会在streetname中输入“Ampitheater”,跳过输入资源名称的提示,并在下一个字段中输入“Parkway”。如何解决此问题?您可以使用: cout这是因为当您将字符串作为右侧使用提取运算符时,它会在第一个空白字符处停止 您需要的是免费功能: cout << "Input street number: "; cin.getline(st

如果在单词之间输入空格,则会出现上述代码的问题。例如,如果我在streetname中输入“Ampitheater Parkway”,那么它会在streetname中输入“Ampitheater”,跳过输入资源名称的提示,并在下一个字段中输入“Parkway”。如何解决此问题?

您可以使用:


cout这是因为当您将字符串作为右侧使用提取运算符时,它会在第一个空白字符处停止

您需要的是免费功能:

cout << "Input street number: ";
cin.getline(streetnum, 256); // Assuming 256 character buffer...
cout << "Input street name: ";
cin.getline(streetname, 256);
如果需要,可以指定其他一些分隔符:

std::getline(std::cin, streetnum); // reads until \n

更好的方法是使用一个小函数:

char c = /* something */;
std::getline(std::cin, streetnum, c); // reads until c is encountered

:)

最好使用
std::string
std::getline
而不是硬编码缓冲区大小。@Gman:True-但这至少解决了当前的问题。
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.