吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 690|回复: 7
收起左侧

[求助] string相关问题

[复制链接]
SLCoCo 发表于 2022-6-13 17:58
为什么这样写可以
[Asm] 纯文本查看 复制代码
	string name;
	string nameseed = "abcde";
	int score=0;
	for (int i = 0; i < 5; i++)
	{
		name = "选手";
		name +=  nameseed[i];
		Person p(name, score);
		v.push_back(p);
	}

这样却不行
[C++] 纯文本查看 复制代码
	string name;
	string nameseed = "abcde";
	int score=0;
	for (int i = 0; i < 5; i++)
	{
		name =  "选手"+nameseed[i];
		Person p(name, score);
		v.push_back(p);
	}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
cimery + 1 + 1 热心回复!

查看全部评分

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

平淡最真 发表于 2022-6-13 18:06
下面的一直在累加。上面的第六行循环一次后会把后缀去掉
怜渠客 发表于 2022-6-13 18:36
平淡最真 发表于 2022-6-13 18:06
下面的一直在累加。上面的第六行循环一次后会把后缀去掉

请问,name="xxx"+(string)a;
这种会一直累加吗
平淡最真 发表于 2022-6-13 18:40
ryosga 发表于 2022-6-13 20:39
改成这样:  name = std::string("选手") + nameseed[i];

name =  "选手"+nameseed[i];  // 这里等号后面实际是 const char* + char, 所以也就是指针的偏移, 而不是字符串追加
 楼主| SLCoCo 发表于 2022-6-14 00:13
ryosga 发表于 2022-6-13 20:39
改成这样:  name = std::string("选手") + nameseed;

name =  "选手"+nameseed;  // 这里等号后面实际是 ...

大佬我刚开始学不是很理解他为什么实际表示的是这个 const char*
我应该去看什么能了解这个
ryosga 发表于 2022-6-14 09:03
这个学c++基础就可以了, 主要是多练手, 踩的坑多了就明白了
CatciSurn 发表于 2022-6-18 20:53
SLCoCo 发表于 2022-6-14 00:13
大佬我刚开始学不是很理解他为什么实际表示的是这个 const char*
我应该去看什么能了解这个

因为string里面的每一个索引表示的字符都是char类型,
所以我们对string进行单个位置上字符匹配的时候,都是这样写
if(string == '发'){
  恭喜发财(666);
}
而不是string == ”发“
单引号表上的是char *
双引号表示的是const char * or string::std
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 10:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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