吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1360|回复: 8
收起左侧

[已解决] C++取随机字符报错

[复制链接]
Pammer 发表于 2020-4-1 13:21
本帖最后由 Pammer 于 2020-4-1 13:40 编辑

[C++] 纯文本查看 复制代码
#include<iostream>
#include<string>
#include<cstdlib>
#include<ctime>

using namespace std;

string str;

int main()
{
        const int length = rand() % 15;
        for (int i = 0; i < length; ++i)
                str[i] = rand() % 95 + 32;//ASCII码表前32和最后127字符不可见(127-32=95)
        cout << str << endl;
        return 0;
}

代码如上,报错怎么办?
显示“Expression: string subscript out of range”

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

hebkljk 发表于 2020-4-1 13:32
表达式:字符串下标超出范围
hebkljk 发表于 2020-4-1 13:33
表达式:字符串下标超出范围
subscript out of range 下标越界 原因有(1)数组索引超出范围;(2)下标超出范围;(3)下标范围不够。

串下标超限。 通常导致的原因是你定义的数组比如 string1(20),只允许有20个值,但在实际赋值过程中超过了20个值,就会导致下标超限。

可仔细检查程序中的赋值语句,必要时可以用单步检测,看看到底赋值中发生了什么情况。
yourGrace 发表于 2020-4-1 13:34
c++ string 无参数初始化后,size是0, 不能用下标添加, str[i] = ... 这里改为str.push_back();
JuncoJet 发表于 2020-4-1 13:35
string 不是这么用的
你这用法,不如写 char str[200];
正儿八百的C++的话,用sstream
qianmo2001 发表于 2020-4-1 13:40
下标越界
hebkljk 发表于 2020-4-1 13:40
#include<iostream>
#include<string>
#include<cstdlib>
#include<ctime>

using namespace std;

string str;

int main()
{
        const int length = rand() % 15;
        for (int i = 0; i < length; ++i)
        {str[i] = rand() % 95 + 32;//ASCII码表前32和最后127字符不可见(127-32=95)
        cout << str[i] << endl;
        }
        return 0;
}
 楼主| Pammer 发表于 2020-4-1 13:40
yourGrace 发表于 2020-4-1 13:34
c++ string 无参数初始化后,size是0, 不能用下标添加, str = ... 这里改为str.push_back();

谢谢,成功了
古月不傲 发表于 2020-4-1 13:47
用Release版本
[C++] 纯文本查看 复制代码
#include<iostream>
#include<string>
#include<cstdlib>
#include<ctime>

using namespace std;

string str;

int main()
{
	srand((unsigned)time(NULL));
	const int length = rand() % 15;
	for (int i = 0; i < length; ++i)
	{
		str[i] = rand() % 95 + 32;//ASCII码表前32和最后127字符不可见(127-32=95)
	}	
	cout << str.c_str() << endl;

	system("pause");
	return 0;
}
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-15 07:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表