首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么字符串'text2‘的输出为空?

为什么字符串'text2‘的输出为空?
EN

Stack Overflow用户
提问于 2021-05-11 19:49:38
回答 2查看 40关注 0票数 1

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

代码编译成功,但在执行时,屏幕上不会显示任何内容。

代码如下:

代码语言:javascript
复制
#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;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-11 20:12:55

因为text2是空的,所以你不能做text2[k]=text1[i-c],你需要先调整它的大小。

代码语言:javascript
复制
#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;
            text2.resize(i);
            for(k=0; k<i; k++)
            {
                text2[k]=text1[i-c];
                c--;
            }
            done=true;
        }

    }
    cout<<text2<<endl;
    return 0;
}
票数 0
EN

Stack Overflow用户

发布于 2021-05-11 19:54:08

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67486145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档