标题:帮我看看这个例子,怎么错了
只看楼主
吉姆汤
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2020-3-10
结帖率:25%
 问题点数:0 回复次数:4 
帮我看看这个例子,怎么错了
#include <iostream>
using namespace std;
#include<string>

int main()
{
    string str;
    char s[] = "12345";

    str.reserve(5);

    for (int i = 0; i < 5; i++)
        str[i] = s[i];

    cout << "str:" << str << endl;
    cout << "length():" << str.length() << endl;
    system("pause");
    return 0 ;
}
 

[此贴子已经被作者于2021-8-16 11:23编辑过]

搜索更多相关主题的帖子: cout str string 例子 length 
2021-08-16 11:21
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
怎么错了
你先要说清楚是什么错,编译错误,还是运行错误?

str.reserve(5); 改为 str.resize( 5 ); 吧
2021-08-16 11:25
吉姆汤
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2020-3-10
得分:0 
回复 2楼 rjsp
运行结果length,为啥是0,不是用了reserve函数吗?用的错吗
2021-08-16 11:35
吉姆汤
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2020-3-10
得分:0 
自问自答

resize(),设置大小(size);
reserve(),设置容量(capacity);
size()是分配容器的内存大小,而capacity()只是设置容器容量大小,但并没有真正分配内存。
打个比方:正在建造的一辆公交车,车里面可以设置40个座椅(reserve(40);),这是它的容量,但并不是说它里面就有了40个座椅,只能说明这部车内部空间大小可以放得下40张座椅而已。而车里面安装了40个座椅(resize(40);),这个时候车里面才真正有了40个座椅,这些座椅就可以使用了
2021-08-16 11:45
吉姆汤
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2020-3-10
得分:0 
回复 2楼 rjsp
谢谢,版主,再次十分的感谢
2021-08-16 11:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-506539-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.166952 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved