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

Posted 花狗Fdog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用下标给string类型赋值之后,cout输出变量为空的问题。相关的知识,希望对你有一定的参考价值。

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

看下面代码

		//这个一个函数中的代码,函数参数是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’);

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

怕忘记,记录与此。

以上是关于使用下标给string类型赋值之后,cout输出变量为空的问题。的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

c++里边string类用数组的形式输入为啥无法用cout输出?

字符串类型的输入输出

C++中关于string类型究竟能不能用cout输出的问题