SLCoCo 发表于 2022-6-13 17:58

string相关问题

为什么这样写可以
        string name;
        string nameseed = "abcde";
        int score=0;
        for (int i = 0; i < 5; i++)
        {
                name = "选手";
                name +=nameseed;
                Person p(name, score);
                v.push_back(p);
        }
这样却不行        string name;
        string nameseed = "abcde";
        int score=0;
        for (int i = 0; i < 5; i++)
        {
                name ="选手"+nameseed;
                Person p(name, score);
                v.push_back(p);
        }

平淡最真 发表于 2022-6-13 18:06

下面的一直在累加。上面的第六行循环一次后会把后缀去掉

怜渠客 发表于 2022-6-13 18:36

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

请问,name="xxx"+(string)a;
这种会一直累加吗

平淡最真 发表于 2022-6-13 18:40

lianquke 发表于 2022-6-13 18:36
请问,name="xxx"+(string)a;
这种会一直累加吗

我看错了{:1_896:},不会

ryosga 发表于 2022-6-13 20:39

改成这样:name = std::string("选手") + nameseed;

name ="选手"+nameseed;// 这里等号后面实际是 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
页: [1]
查看完整版本: string相关问题