C++ 范围for语句改变String对象需要将循环变量定义成引用类型。

文章探讨了在C++中尝试修改string对象时,为何必须使用引用类型作为循环变量。通过示例代码展示了当使用普通变量时,由于值传递的特性,string对象不会被实际修改。而引用类型的循环变量可以直接修改原对象的元素,从而实现预期的字符转换效果。
摘要由CSDN通过智能技术生成

“如果想改变string对象中字符的值,就必须把循环变量定义成引用类型。”

写了代码进行验证。

	std::string s = "hello";

	for (auto c : s)
	{
		std::cout << c ;
	}
	
    for (auto c : s)   //这里的c只是一个按值传递的复制品
	{
		if (isupper(c))
		{
			c = (char)tolower(c);
		}
	}

 得到的运行结果也是支持书的说法。string对象没有被修改

(unsigned __int64)是string::type size的类型。如何在c++中查看变量类型请看这篇博客。

将循环变量改为引用类型,其中每个c会是对s一个元素的引用。

	for (auto &c : s)   //这里的c是对s序列每个元素的引用
	{
		if (isupper(c))
		{
			c = (char)tolower(c);
		}
	}

代码正确运行,修改了string对象。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值