SystemC sc_uint из объекта String - PullRequest
0 голосов
/ 21 мая 2018

Я недавно начал использовать SystemC и хотел написать простую программу, которая считывает числа из файла в строковом формате SystemC и преобразует их в типы sc_uint.Каким-то образом простая программа всегда дает сбой во время преобразования

Программа:

#include <systemc.h>
#include <fstream>
#include <string>

int sc_main( int argc, char *argv[] ){
    ifstream in_file;
    std::string line;
    char *buffer;

    in_file.open( "ex3_2.dat", ios::in );

    while( getline( in_file, line ) ){
        sc_uint<29> x = line.c_str();
    }

    return( 0 );
}

Файл ex3_2.dat

0x1234\n

Выход

Ошибка: (E403) преобразование не удалось: строка символов пуста

Я не понимаю, почему преобразование прерывается.

c_str ()должен вернуть константный символ *.

Печать строки в cout показывает правильное значение для строки.

Статические назначения, такие как "0x1234", работают.У кого-нибудь есть идея?

1 Ответ

0 голосов
/ 22 мая 2018

Следующий код

#include <systemc.h>
#include <fstream>
#include <string>

#include <iostream>

int sc_main( int argc, char *argv[] ){

    std::ifstream in_file;
    std::string line;

    in_file.open( "ex3_2.dat", ios::in );

    while( getline( in_file, line ) ){
        sc_uint<29> x = line.c_str();
       std::cout << "0x" << std::hex << x << '\n';
    }

    return 0;
}

с файлом ex3_2.dat

0x1234
5
6
7
8

, скомпилированным со следующим

g++ -std=c++11 -Wall -o main.o main.cpp -lsystemc

, производит

0x00001234
0x00000005
0x00000006
0x00000007
0x00000008

g ++ --version = g ++ (GCC) 7.1.0

Нет предупреждений или ошибок компилятора.Вывод таков, что сам код в порядке.Возможно, ищите ошибки в другом месте, какие версии библиотеки std связаны и т. Д. Скрытые символы в файле?ASCII против UTF-8?Слишком много возможностей сузить это отсюда.

...