分配是基本的“cin全名”,然后是“检索名中”,您在其中创建一个程序,要求用户将其全名键入单个字符串,然后程序将名称分开并输出它是分开组织的。这是我写的:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string name;
    int index;
    index = name.find(' ');
    cin >> name;
    cout << "First name: " << name.substr(0, index) << endl;
    name = name.substr(index+1, name.length()-1);
    index = name.find(' ');
    cout << "Middle Name: " << name.substr(1, index) << endl;
    name = name.substr(index+1, name.length()-1);
    cout << "Last name: " << name;
    return 0;
}

代码不会正确地将它们分开,并且不会正确地重新定义“名称”。
它总是刚弹回到字符串的开头。
对新手有什么帮助吗?
这是一个示例输出:
Teenage Wonder Land
First name: Teenage
Middle Name: eenag
Last name: Teena
Process returned 0 (0x0)   execution time : 7.942 s
Press any key to continue.

最佳答案

我认为您应该使用std::getline一次获取整行文本。当前,您只读第一个单词(>>运算符只会提取直到下一个空格字符的文本)。

std::string name;
if (std::getline(cin, name))
{
    // extraction successful, "name" should contain entire line
}

然后,您可以在此问题中使用其他答案之一,或者继续使用自己的方法。

关于c++ - 一门类(class)的初学者C++程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18797922/

10-14 16:25
查看更多