首页 > 解决方案 > 为什么字符串'text2'的输出为空白?

问题描述

'text1' 是一个句子。我希望“text2”包含“text1”中句子的第一个单词(第一个空格之前的所有字母)。

代码编译成功,但是在执行时,屏幕上没有打印任何内容。

下面是代码:

#include<iostream>
#include<string>
using namespace std;

int main()
{
    int i,k,c;
    bool done=false;
    string text1,text2;
    getline(cin, text1);
    for(i=0; i<text1.size(); i++)
    {
        if(text1[i]==' ' && done==false)
        {
            c=i;
            for(k=0; k<i; k++)
            {
                text2[k]=text1[i-c];
                c--;
            }
            done=true;
        }
        
    }
    cout<<text2<<endl;
    return 0;
}

标签: c++string

解决方案


使用text2.push_back(text1[i-c])API),因为索引到一个空字符串(这是什么text2text2[k]调用未定义的行为。该索引操作不会更改text2(或其内容)的长度。


推荐阅读