前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用下标给string类型赋值之后,cout输出变量为空的问题。

使用下标给string类型赋值之后,cout输出变量为空的问题。

作者头像
花狗Fdog
发布2021-08-10 10:36:32
4.9K0
发布2021-08-10 10:36:32
举报
文章被收录于专栏:花狗在Qt花狗在Qt

今天写创建文件夹的时候,怎么创建都不会,反复修改,确定错误是出在了string类型的变量上面。

看下面代码

代码语言:javascript
复制
		//这个一个函数中的代码,函数参数是string fileurl_s
        int len = fileurl_s.length();
        std::string fileurl_s_cy;
        for(int i =0;i<len;i++)
        {
            fileurl_s_cy[i]=fileurl_s[i];
            if(fileurl_s_cy[i]=='/' || fileurl_s_cy[i]=='\\')
            {
                if (0 != access(fileurl_s_cy.c_str(), 0))
                {
                    mkdir(fileurl_s_cy.c_str(),0);   // 返回 0 表示创建成功,-1 表示失败
                }
            }
        }

这个代码实现的功能是创建文件夹,以及子文件夹,根据参数来做,有则略过,无则创建

但是我发现根本创建不了文件夹

我试着输出循环中的fileurl_s_cy[i],能够正常输出我想要的字符

但是当我输出fileurl_s_cy的时候出了问题,fileurl_s_cy至始至终为空,长度也为空,导致无法正常创建文件夹

明明可以正常输出fileurl_s_cy[i],但是无法正常输出fileurl_s_cy,本以为是’\0’的问题,发现加上也无济于事,fileurl_s_cy整体长度依旧是0

我可以使用std::stringfileurl_s_cy = “www/ccccc” 这种形式正常创建文件夹,但就是无法使用下标的赋值方式

经过一番百度,得知是因为声明fileurl_s_cy的时候没有开辟空间,所以无法使用

奇怪的是输出fileurl_s_cy[i]居然也不报错。

解决方法如下:

声明的时候改为std::string fileurl_s_cy(len,’\0’);

这样就可以正常使用下标赋值,输出以及整体输出

怕忘记,记录与此。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-08-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档