while(true)
{ 
  cout << "Name: ";
  getline(cin, Name);
  if(Name == "Stop")
    break;

  cout << "Additional Name - Y/N: ";
  getline(cin, additional);
  if (additional == "Y") 
    cout << "Additional Name: ";
  getline(cin, Name2);
  else
    cout << "Location: ";
  getline(cin, Location);
  if(Location == "Stop")
    break;
}


chief.cpp: In member function ‘void BookList::Fill()’:
chief.cpp:128: error: ‘else’ without a previous ‘if’

用户输入的第一个名称后,我想给输入第二个名字的选项。如果“N”只跳过了位置,如果“Y”去名2,然后到位置。

有帮助吗?

解决方案

您必须附上if和括号内的else之间的语句{ ... }

其他提示

您需要在这里加括号:

if (additional == "Y") 
     cout << "Additional Name: ";
      getline(cin, Name2);
else
     cout << "Location: ";
     getline(cin, Location);

尝试:

if (additional == "Y") 
{
     cout << "Additional Name: ";
     getline(cin, Name2);
}
// You could have an else here, but that would make location only happen if "additional" was not "Y"

 cout << "Location: ";
 getline(cin, Location);

我怀疑,你总是希望下面的几行发生(获得位置),所以在这种情况下,没有别的要求。

您需要附上if的身体在括号摆脱错误的。通过它的外观,你还需要附上else体中括号:

if (additional == "Y") {
  cout << "Additional Name: ";
  getline(cin, Name2);
 } else {
  cout << "Location: ";
  getline(cin, Location);
 }

您可以仅当块正好包含一个声明(东西用分号({)结束)或其他语句块(};if等)丢弃各地块的大括号(forwhile)。

例如,可以这样做:

while (true)
    if (foo) {
        printf("Hello, ");
        printf("world\n");
    }

或甚至

while (true)
    if (foo)
        for (i = 0; i < 10; i++) {
            printf("Hello, ");
            printf("World!\n");
        }

但在你的代码,你需要使用大括号,因为你if语句包含else语句前两个语句。因此,if线后cout语句结束。

最终的结果因此应当看起来像这样:

if (additional == "Y") {
   cout << "Additional Name: ";
   getline(cin, Name2);
}
else {
   cout << "Location: ";
   getline(cin, Location);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top