为什么我的字符串不应该像它应该分裂?

0 c++ substring substr

我正在研究一个拼接输入的名字字符串的项目,由于某种原因它不起作用.部分内容是从我的书中复制的代码,据说可行,所以我卡住了.难道我做错了什么?

#include <iostream>
#include <string>

using namespace std;

void main()
{
    string name;
    int index;
    cout<<"Please enter your full name. ";
    cin>>name;

    cout<<"\n"<<endl;

    index = name.find(' ');
    cout<<"First Name: "<<name.substr(0, index)<<"          "<<name.substr(0, index).length()<<endl;
    name = name.substr(index+1, name.length()-1);

    index = name.find(' ');
    cout<<"Middle Name: "<<name.substr(0, index)<<"         "<<name.substr(0, index).length()<<endl;
    name = name.substr(index+1, name.length()-1);

    cout<<"Last Name: "<<name<<"                "<<name.length()<<endl;
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*ley 7

大多数人的名字至少由两个单词组成.这只会得到其中一个:

cout<<"Please enter your full name. ";
cin>>name;
Run Code Online (Sandbox Code Playgroud)

istream operator>>是用空格分隔的.改为使用getline:

std::getline(std::cin, name);
Run Code Online (Sandbox Code Playgroud)

为了您的目的,您可能会这样做,这更简单:

std::string first, middle, last;
std::cin >> first >> middle >> last;
Run Code Online (Sandbox Code Playgroud)