我告诉我的指导老师有关我的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/