问题描述
- c++ 如果想要改变string对象中字符的值,必须把循环变量定义成引用类型
-
c++primer上的一句话,不能理解为什么必须要用引用,这和用范围for不用引用有什么区别吗?
试了一下,不用引用输出时字符的值确实没有改变,这是什么原理呢,可以解释一下么?
跪求大神啊
解决方案
不用引用,你循环变量引用的就会是变量的拷贝,就没法修改实际变量
解决方案二:
#include
#include
using std::cout;
using std::endl;
using std::string;
int main()
{
string a("abcde!!!!");
for(auto i:a)
i=toupper(i);
cout<<a<<endl;
}
i不是对a的引用,这样的结果不能使a中字符变为大写
解决方案三:
#include
#include
using std::cout;
using std::endl;
using std::string;
int main()
{
string a("abcde!!!!");
for(auto i:a)
i=toupper(i);
cout<<a<<endl;
}
i不是对a的引用,这样的结果不能使a中字符变为大写
解决方案四:
i在这里跟a里面的字符并不是同一个,只是一份拷贝,
就好像x=y,x++,把y赋予x以后,改变x的值并不能改变y
时间: 2024-12-05 05:44:22