尝试使用getline从一行中提取三个名称 我正在学习C++,我试图从一行中提取三个名字。 cout<< "Please enter your full name" << endl; getline(cin, first_name, ' '); getline(cin, midLast_name);

尝试使用getline从一行中提取三个名称 我正在学习C++,我试图从一行中提取三个名字。 cout<< "Please enter your full name" << endl; getline(cin, first_name, ' '); getline(cin, midLast_name);,c++,string,C++,String,字符串::查找。。。如果未找到,则返回position或string::npos,因此您的代码应该与npos进行比较,而不是==true 您如何接受中间名作为空格?如果用户键入FirstLast怎么办?既然getline得到了行,为什么不直接得到行并处理单行的拆分?为什么不每行得到一个名称?名字、中间名或姓氏中很可能有空格。 if (midLast_name.find(" ") == true) { first_space = midLast_name.find(" "); mi

字符串::查找。。。如果未找到,则返回position或string::npos,因此您的代码应该与npos进行比较,而不是==true


您如何接受中间名作为空格?如果用户键入FirstLast怎么办?既然getline得到了行,为什么不直接得到行并处理单行的拆分?为什么不每行得到一个名称?名字、中间名或姓氏中很可能有空格。
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());

 } 
size_t firstspace = midLast_name.find(" ");
if (firstspace != string::npos) {
   middle_name= midLast_name.substr(0, firstspace);
   ... 
}