Странное поведение C ++ std :: string ... Как это исправить? - PullRequest
1 голос
/ 28 апреля 2009

Это сводит меня с ума. Я занимался этим более 2 часов, пытаясь понять это ...

Вот моя проблема. Я работаю над довольно большой программой, которая работает с байесовскими сетями. Вот основная функция:

using namespace std;

int main()
{  
    DSL_network net;
    initializeNetwork(net); 
    setEvidence(net);
    net.SetDefaultBNAlgorithm(7);
    net.SetNumberOfSamples(80000);
    cout << "Samples:\t" << net.GetNumberOfSamples() << endl;
    updateEvidence(net);
    //net.WriteFile("test.dsl");
    return(DSL_OKAY);
}

Это все отлично работает. Проблема возникает, когда я хочу распечатать строку:

using namespace std;

int main()
{  
    //simple string creation
    string a = "test";
    //should print out "test"
    cout << a << endl;
    DSL_network net;
    initializeNetwork(net); 
    setEvidence(net);
    net.SetDefaultBNAlgorithm(7);
    net.SetNumberOfSamples(80000);
    cout << "Samples:\t" << net.GetNumberOfSamples() << endl;
    updateEvidence(net);
    //net.WriteFile("test.dsl");
    return(DSL_OKAY);
}

Вот вывод (только после печати строки a ...):

yΦy ♠ ≈6 ♦

Что может происходить?

UPDATE:

int main()
    {  
        //simple string creation
        string a = "test";
        //should print out "test"
        cout << a << endl;
        return(DSL_OKAY);
    }

все еще печатает

▀ÇΦy♠≈6 ♦

БОЛЬШОЕ ОБНОВЛЕНИЕ: Вот недавний. Я создал новый проект и вставил код, который опубликовал Нил Баттерворт (спасибо, кстати). Я запустил код, и он напечатан правильно. Затем я добавил два файла .lib в компоновщик в новом проекте (smile.lib для библиотеки SMILE и wsock32.lib для использования сокетов.)

Я попробовал код еще раз, и он правильно напечатал первый «тест», а затем напечатал тарабарщину. Это проблема с одним из .libs, который я связываю вместе. Я попробовал каждый из них по отдельности, чтобы увидеть, не конфликтуют ли они, и кажется, что проблема связана с библиотекой smile.lib. Мне нужно будет зайти в их документацию и выяснить, почему.

Есть идеи?

Спасибо всем за помощь

Спасибо

Ответы [ 11 ]

0 голосов
/ 28 апреля 2009

Я бы порекомендовал медленно удалять любые #include, пока не найдете те, которые вызывают проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...