【问题标题】:How to input the given word line into different strings seperated by space?如何将给定的字行输入到以空格分隔的不同字符串中?
【发布时间】:2019-07-12 10:09:14
【问题描述】:

我是 C++ 新手,发现很难使用字符串。用户正在输入他的全名,即用空格分隔的名字和姓氏,我想在他输入他的名字时将其存储在不同的字符串中

输入

ABC XYZ

代码

    string s1,s2;
    getline(cin,s1);
    
    getline(cin,s2);
    cout<<"Firstname :"<<s1<<endl;
    cout<<"Lastname :"<<s2<<endl;

输出

Firstname :ABC XYZ
Lastname :                //nothing is printed here , i want to sore the last name here

【问题讨论】:

    标签: c++ string c++11 iostream


    【解决方案1】:

    这是因为 std::getline 直到看到 \n 才会停止,您可以提供自己的分隔符:

    string s1,s2;
    getline(cin,s1, ' '); // stop at whitespace
    getline(cin,s2); // stop at \n
    

    附注:在这个小程序中它很好,但是当你使用更大的程序时,你会想要避免使用using namespace std;

    【讨论】:

    • 嗯,你有 27k 的代表。因此,您是一位非常有经验的 C++ 开发人员。但我想没有人会以这种方式使用std::getline,只是为了读取2个字符串。几乎每个人都会使用std::cin &gt;&gt; s1 &gt;&gt; s2;。我的猜测是您这样回答是因为 OP 使用了 std::getline 。 . .
    • @ArminMontigny 正确。因为混合 getline 和 cin 会留下一团糟,所以我确保将其保留为 OP 的 getline。
    【解决方案2】:

    做:

     cin >> s1 >> s2;
    
     cout<<"Firstname :" << s1 <<endl;
     cout<<"Lastname :" << s2 <<endl;
    

        string s1,s2;
        getline(cin,s1);
        auto pos = s1.find(' ');
        s2 = s1.substr(pos);
        s1 = s1.substr(0, pos);
        cout<<"Firstname :" << s1 << endl;
        cout<<"Lastname :" << s2 << endl;
    

    【讨论】:

    • 这是一个拼写错误,现在我已经更新了问题
    猜你喜欢
    • 2020-01-22
    • 2016-03-12
    • 2010-12-01
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多