繁体   English   中英

使用string.at()将char构造为字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM