你好,我正在学习C ++,我试图从一行中提取三个名字(第一个,中间的,最后一个)。
cout<< "Please enter your full name" << endl;
getline(cin, first_name, ' ');
getline(cin, midLast_name);
我将中间和姓氏作为变量,然后将它们拆分。我需要能够接受一个空格作为中间名,所以这就是我正在做的事情。但是,在我的条件语句中,即使存在空格,代码也找不到空格。有什么想法吗?
if (midLast_name.find(" ") == true)
{
first_space = midLast_name.find(" ");
middle_name = midLast_name.substr(0,first_space);
last_space = midLast_name.rfind(" ");
last_name = midLast_name.substr(midLast_name.rfind(" ") + 1, full_name.length());
}
答案 0 :(得分:0)
string::find(...)
会返回该位置,如果找不到则会string::npos
,因此您的代码应与npos
进行比较,而不是==true
。
size_t firstspace = midLast_name.find(" ");
if (firstspace != string::npos) {
middle_name= midLast_name.substr(0, firstspace);
...
}