[英]Const char to string with string.at()
我有一个弦
const std::string myString = "my string";
永远不会改变。
另外,我具有以下功能:
void myFunction(const std::string str);
我想逐个字符遍历char字符串,并对每个子字符串做一些事情(我将每个子字符串传递给myFunction
)。
这是我首先想到的代码:
for (std::size_t i = 0; i < myString.length(); ++i) {
myFunction(myString.at(i));
}
但它给了我错误“无法将const char转换为字符串”。 所以我想出了以下代码:
for (std::size_t i = 0; i < myString.length(); ++i) {
char currentChar[2] = {myString.at(i), '\0'};
myFunction(currentChar);
}
可行,但我对此并不满意。
这个解决方案正确吗? 还是它能正常工作只是一个巧合(就像未定义的行为,但我很幸运在我测试它时就可以工作)?
另外,在myFunction
传递的字符串是否应该为const?
是的,您的解决方案是正确的。 它既不高效也不美观,但是可以工作。
myFunction
需要一个字符串。 您不能将其传递给字符。 字符和一个字符字符串是不同的东西。 此外,没有将字符转换为字符串的构造函数。
由于myFunction
需要一个字符串,因此应给它一个字符串,或者至少给它一个const char*
,它可以隐式转换为字符串。
您确定myFunction
确实需要字符串而不是字符吗?
附带说明一下,您确定myFunction
不应通过引用接收字符串吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.