【发布时间】:2016-05-21 04:40:51
【问题描述】:
我有一个字符串
const std::string myString = "my string";
永远不会改变。
另外,我还有以下功能:
void myFunction(const std::string str);
我想逐个字符地遍历字符串并对每个子字符串做一些事情(我将每个子字符串传递给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将逐个字符地遍历字符串。但在剩下的问题中,您尝试将单个字符传递给myFunction。 -
您正在逐个字符地遍历字符串;您希望将什么子字符串传递给
myFunction? -
澄清了,抱歉!
-
@A. D. 那么,您将每个字符视为一个字符的子字符串吗?如果是这样,为什么将其作为字符串而不是字符传递?
-
你为什么不让
myFunction接受char(void myFunction(char))?
标签: c++ string char substring constants