【发布时间】:2020-01-18 08:49:04
【问题描述】:
我需要逐个字符地读取字符串,以便对其执行一些控制。有可能这样做吗?我是否必须将其转换为 char 数组?
我试图用string_to_control[i] 指向单个字符,然后增加 i 来移动,但这似乎不起作用。
举个例子,我贴一段括号控制的代码。
bool Class::func(const string& cont){
const string *p = &cont;
int k = 0;
//control for parenthesis
while (p[k].compare('\0') != 0) {
if (p[k].compare("(") == 0) { ap++; };
if (p[k].compare(")") == 0) { ch++; };
k++;
};
//...
};
字符串被复制好了,但是当我尝试第一次比较时,就会抛出异常。
编辑:我补充说,我想拥有初始字符串 cont 的不同副本(并继续它们,而不是直接在 cont 上)以便操纵它们(稍后在代码中,我需要验证某些单词在正确的位置)。
【问题讨论】:
-
将您的代码添加到问题中。
-
小改进建议:1:如果你坚持做
ifs:在第二个if之前添加else。 2:没有理由让它成为类成员函数。改为免费功能。 -
你能用
c_str()把std::string转换成C字符串吗?阅读:stackoverflow.com/questions/7416445/…