【问题标题】:I am having trouble with getline() function in C++ [duplicate]我在使用 C++ 中的 getline() 函数时遇到问题 [重复]
【发布时间】:2020-05-13 01:09:03
【问题描述】:

您好,我在使用 C++ 中的 getline() 函数时遇到了问题我正在学习 C++ 课程的介绍,而我自己在网上对这个主题所做的研究并没有让我找到一个解决方案,我并不真正理解他们所说的所有事情,因为这是我班上的第一个作业。任何快速/粗略的帮助/理解将不胜感激,因为我们将在课堂上更彻底地讨论这个主题。下面是我正在编写的代码。这是一个简单的程序,只需询问用户姓名和地址,然后以正确的邮件格式显示该信息。

#include <iostream>
#include <string>

int main()
{
 // Variables for Mailing Addresses
  std::string firstName;
  std::string lastName;
  int houseNum;
  std::string streetName;
  std::string cityName;
  std::string state;
  int zipCode;

 // Asking for input
  std::cout << "What is your First name?: ";
  std::cin >> firstName;"\n";

  std::cout << "What is your Last name?: ";
  std::cin >> lastName;"\n";

  std::cout << "What is your House Number?: ";
  std::cin >> houseNum;"\n";

  std::cout << "What is your Street Name?: ";
  std::getline(std::cin,houseNum);
 return 0;
}

抛出的错误代码是“No matching function for call to 'getline'”。

【问题讨论】:

  • std::getline(std::cin,houseNum); 应该是:std::getline(std::cin, streetName);
  • 为什么前三个用std::cin,最后一个用std::getline?是什么让你想在那里做一些不同的事情?你的输入实际上是什么样的?

标签: c++ xcode getline


【解决方案1】:

嗯,我看到了几个主要问题。

你有这行:

std::cin >> firstName;"\n";

第一部分是正确的,但第二部分是错误的。 你想要这个:

std::cin >> firstName;
std::cout << "\n" << std::endl;

另外,您在之前创建的字符串对象上调用getlinestd::cin 是流类型对象,而不是字符串。我建议你看看this page 谈论getline

【讨论】:

    【解决方案2】:

    getline() 的问题在于您试图将字符串流分配给int 变量houseNum,因此出现错误。

    没有匹配函数调用'getline(std::istream&, int&)'

    另外,代码行:

    std::cin >> firstName;"\n";
    

    应该给你:

    警告:语句无效[-Wunused-value]

    对于"\n"

    启用compiler warnings,它们会为您节省大量时间。

    【讨论】:

    猜你喜欢
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 2021-05-02
    • 2022-11-25
    相关资源
    最近更新 更多