码迷,mamicode.com
首页 > 其他好文 > 详细

[017]string类使用注意事项

时间:2014-12-11 18:43:16      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ar   color   使用   sp   for   on   div   

最近自己写着玩,写了一个这样的函数:

void foo(const string& iStr) {
    for (int i = 0; i < iStr.length(); ++i) {
        string str = iStr.at(i);
    }
}

函数中间还涉及到的其他业务不管,问题在于,写了上面的代码过后,编译不过。

咋一看,这不是很正常么?取得iStr中的一个值,然后赋值给str就行了。

其实不然,因为平常我们用string用习惯了,就会习惯性的以为它是基本类型,可是,它是类类型啊!

于是,当我们采取下面的操作的时候:

string str = iStr.at(i);

iStr.at(i)返回一个const char类型的字符,于是在实例str的时候就会去找string中是否存在const char类型的拷贝构造函数。

结果,没找到,没办法复制对象,就出错了。

void foo(const string& iStr) {
    for (int i = 0; i < iStr.length(); ++i) {
        const char str = iStr.at(i);
    }
}

这样就会没有问题了。

如果我们一定要使用string类型怎么办?可以这样来,利用string保存字符的原理

void foo(const string& iStr) {
    string str;
    for (int i = 0; i < iStr.length(); ++i) {
        str = iStr.at(i);
    }
}

将对象实例和赋值分离开来,就不会出现这样的问题了。

 

[017]string类使用注意事项

标签:style   blog   ar   color   使用   sp   for   on   div   

原文地址:http://www.cnblogs.com/hustcser/p/4158091.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!