【问题标题】:program can't recognize a char程序无法识别字符
【发布时间】:2015-07-10 16:56:51
【问题描述】:

我对压缩两个字符没有什么问题。

for(int i=0; i<initializer.size(); i++)
{
    char letter;
    letter=initializer[stringIter];
    if(letter=='+')
    {
        std::cout<<"+";    
    }
    else if(letter=='-')
    {
        std::cout<<"-";
    }
    else if(letter=='F')
    {
        std::cout<<"F";
    }
    else
    {
        std::cout<<letter<<" UNKNOWN";}
    }
    initializer =F+F-F-F+F
}

当我尝试打印字符时,我几乎没有插入真正字符的问号,而且几乎每个字符都是未知的。

【问题讨论】:

  • 不应该是initializer[i]吗?或者添加stringIter的声明
  • 学习how to use a debugger 并单步执行代码的最佳时机,这样您就可以准确了解发生了什么。
  • stringIter is i;) 它的值相同。
  • stringIter 在哪里循环增加?我没有看到它被声明为对i 的引用,那么它怎么能一样呢?

标签: c++ string


【解决方案1】:

我发现: getting errors stray ‘\342’ and ‘\200’ and ‘\214’

它是通过从网络上复制奇怪的字符来引起的;)所以它现在可以工作了

【讨论】:

  • 实际上没有。它只是看起来像。祝调试愉快!
【解决方案2】:

这种方式可行:

#include<iostream>
#include<string>
int main(){
std::string initializer = "F+F-F-F+F";
 for(int i=0; i<initializer.size(); i++)
    {

        char letter;
        letter=initializer[i];
        if(letter=='+')
        {            std::cout<<"+";

        }
        else if(letter=='-')
        {            std::cout<<"-";

        }
        else if(letter=='F')
        {            std::cout<<"F";

        }
        else
        {
        std::cout<<letter<<" UNKNOWN";}
        }
}

DEBUUGING 显示他找到了一个 \342 \210 \222 字符作为字母。但为什么?.. 所以有什么问题?真的是字符。

【讨论】:

  • Lolz .....................它的函数不在 main 和 initializer 中正在传递给它。我这样写是为了显示它的价值.....
  • 然后呢?我已经修复了您的迭代器错误。如果您将此代码插入到 notmain 函数中,它将起作用。
  • 注意这一行:letter=initializer[i];
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-05
  • 1970-01-01
相关资源
最近更新 更多