使用下标给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输出变量为空的问题。