2015-07-10 2 views
-6

У меня есть небольшая проблема с сжатием двух символов.программа не может распознать символ

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 
} 

и когда я пытаюсь напечатать полукокс я мало знаком вопроса InstEd реального полукокса, и почти каждый символ является UNKNOWN.

+4

не должен быть 'инициализатором [я]'? Или добавьте объявление 'stringIter' – WorldSEnder

+2

Идеальное время, чтобы узнать [как использовать отладчик] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) и пройти через кода, чтобы вы могли точно видеть, что происходит. –

+0

stringIter is i;) Его же значение. – Menos

ответ

0

Этот способ будет работать:

#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";} 
     } 
} 

DEBBUGING показывает, что он нашел \ 342 \ 210 \ 222 полукокса в письме. Но почему? .. Так в чем проблема? Это действительно символы.

+0

Lolz .................................. это функция не в основном, и инициализатор переходит к ней. Я написал так, чтобы показать его значение ..... – Menos

+0

И так? Я исправил вашу ошибку итератора. Если вы вставляете этот код в функцию notmain, он будет работать. – zveryansky

+0

Смотрите на эту строку: letter = initializer [i]; – zveryansky

Смежные вопросы