gpt4 book ai didi

c++ - 一个 if else 语句将不会执行

转载 作者:行者123 更新时间:2023-11-30 03:06:21 26 4
gpt4 key购买 nike

下面是我遇到问题的部分

        if(transition == *(vec.end()-1)) { //vec contains the ASCI code
vec.pop_back();
--vec_index;
result.append(vec[vec_index]);
} else if(colors.find(modified.substr(1)) == colors.end()) {
cout << result << endl;
cout << "\033[0;37m";
cerr << "**ERROR: INVALID CLOSING COLOR TAG ON LINE: "
//cerr << "**ERROR: OVERLAPPING CLOSING COLOR TAG ON LINE: "
<< nlines << endl;
exit(0);
} else {
cout << result << endl;
cout << "\033[0;37m";
cerr << "**ERROR: INVALID CLOSING COLOR TAG ON LINE: "
//cerr << "**ERROR: OVERLAPPING CLOSING COLOR TAG ON LINE: "
<< nlines << endl;
exit(0);
}

在上面的代码中,我的else-if语句好像根本就没有执行。我想做的是当在 map 中找不到 modified.substr(1) 时打印第一个错误,否则(颜色字符串在 map 中但它与 vector 中的最后一个不同)打印“其他”错误。但是,我的 else 案例总是在打印。 modified.substr(1) 的原因是因为 modified(在本例中)以/开头。

最佳答案

transition = colors[modified.substr(1)];

将在 map<> color; 中创建一个条目如果 它不存在 并且值初始化它。这就是为什么你的 else if条件永远不会为真。使用 map::find而不是 operator []找到条目。类似的东西,

map<string,string>::const_iterator it = colors.find(modified.substr(1)];

并使用 it而不是 transition .您可以取消引用 it (作为键的 it->first 和字符串值的 it->second)在需要获取底层 string 时.

关于c++ - 一个 if else 语句将不会执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6729542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com