вопрос
От: Аноним  
Дата: 20.10.05 13:26
Оценка: :)))
ЗДРАСТИ

Подскажите пожалусйста, почему при проверки
переменной g на наличие символа "^", код проход когбудто символа нету, хотя при определении в этом мести точки остановки и проверки значений символ имеется с двух старон равенства, надеюсь понятно обьяснил.
 string str,g;
    
    char delim[256];
    char ch;
    std::ifstream file("C:\\DATA\\Commodity.txt", std::ios::binary);
    while(!file.fail())
    {
        while(file.getline(delim,sizeof(delim)))
        {
        for(int i=0;i<256;i++)
        {
               g = delim[i];
               if(g.c_str()=="^")
            {
                str+=delim[i];
               
                Console::WriteLine(str.c_str());

            };
            
        };
        };
    };


спасибо
Re: вопрос
От: MaximE Великобритания  
Дата: 20.10.05 13:31
Оценка:
On Thu, 20 Oct 2005 17:26:40 +0400, Аноним <0@users.rsdn.ru> wrote:

> Подскажите пожалусйста, почему при проверки

> переменной g на наличие символа "^", код проход когбудто символа нету, хотя при определении в этом мести точки остановки и проверки значений символ имеется с двух старон равенства, надеюсь понятно обьяснил.

Расскажи на словах, что ты пытаешься сделать, код твой туманен.

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 2.0 beta
Re: вопрос
От: sadomovalex Россия http://sadomovalex.blogspot.com
Дата: 20.10.05 13:31
Оценка:
Здравствуйте, Аноним, Вы писали:

А>ЗДРАСТИ


А>Подскажите пожалусйста, почему при проверки

А>переменной g на наличие символа "^", код проход когбудто символа нету, хотя при определении в этом мести точки остановки и проверки значений символ имеется с двух старон равенства, надеюсь понятно обьяснил.
А>
А> string str,g;
    
А>    char delim[256];
А>    char ch;
А>    std::ifstream file("C:\\DATA\\Commodity.txt", std::ios::binary);
А>    while(!file.fail())
А>    {
А>        while(file.getline(delim,sizeof(delim)))
А>        {
А>        for(int i=0;i<256;i++)
А>        {
А>               g = delim[i];
А>               if(g.c_str()=="^")
А>            {
А>                str+=delim[i];
               
А>                Console::WriteLine(str.c_str());

А>            };
            
А>        };
А>        };
А>    };
А>


А>спасибо


потому что в этом случае сравниваются адреса, а не содержимое строк
"Что не завершено, не сделано вовсе" Гаусс
Re: вопрос
От: sch  
Дата: 20.10.05 13:33
Оценка: :))
сообщил/сообщила в новостях следующее: news:1446839@news.rsdn.ru...
> ЗДРАСТИ
ДРАСТЕ!

> Подскажите пожалусйста, почему при проверки

> переменной g на наличие символа "^", код проход когбудто символа нету, хотя при определении в этом мести точки остановки и проверки значений символ имеется с двух старон равенства, надеюсь понятно обьяснил.
Обижаейшь, брателлова! Мы тута не какие-нить пассажиры, мы фишку сразу просекли.

> [ccode]

> string str,g;
>
> char delim[256];
> char ch;
> std::ifstream file("C:\\DATA\\Commodity.txt", std::ios::binary);
> while(!file.fail())
> {
> while(file.getline(delim,sizeof(delim)))
> {
> for(int i=0;i<256;i++)
> {
> if(delim[i]=='^')
> {
> str+=delim[i];
>
> Console::WriteLine(str.c_str());

Когда ты пишешь "zxc" ты определяешь строку (массив символов), соответственно операция "zxc"=="zxc" сравнивает не строки а указатели, так что условие это может быть истинным, а может быть и ложным. Implementation defined, как говорится.

> спасибо

ПАЖАЛСТА!
Захади ищщо!
Posted via RSDN NNTP Server 1.9
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.