我告诉我的指导老师有关我的cin.ignore的帮助,这就是她告诉我的。问题是,当您最后阅读时-它包含逗号。因此,您的cin.ignore需要2个参数100,\ n。在这种情况下,您不需要cin.ignore。只需先阅读,然后再阅读中间。然后使用字符串函数“查找”逗号,并从最后一个从位置0开始到逗号之前的位置创建子字符串。问题是我不知道她在说什么。我知道如何放入查找功能,但第二部分却没有。所以我已经在程序中添加了find和substr显然不起作用

#include <iostream>
#include <string>

using namespace std;

char chr;
int main()
{
    string last, first, middle;

    cout << "Enter in this format your Last name comma First name Middle name.    " << endl;
    // Input full name in required format
    last.find(",");
    last.substr(0);
    cin >> last;

    // receiving the input Last name
    cin >> first;
    // receiving the input First name
    cin >> middle;
    // receiving the input Middle name
    cout << first << " " << middle << " " << last;
    // Displaying the inputed information in the format First Middle Last name

    cin >> chr;

    return 0;
}

最佳答案

您似乎在这里有一些基本的误解。
last.find(",");last.substr(0);都不会自行执行任何操作。它们都返回结果,但是如果您不将其分配给任何结果,则该结果会丢失。此外,substr接受两个参数。如果省略第二个,last.substr(0)将仅返回所有last

您的老师的意思可能是last = last.substr( 0, last.find(",") );。请注意,这必须在您从cin读取字符串之后发生。让我们把这句话分开:

  • last.find(",")将返回逗号为
  • 的位置
  • last.substr( 0, last.find(",") )last前面逗号
  • 的一部分
  • 最后,分配last = ...将确保last实际上得到更改。

  • 请注意,这仅在逗号直接附加到姓氏(如"Miller, John Henry")中时有效。

    关于c++ - 使用find和substr从我的输出中删除逗号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19105816/

    10-13 09:41