Похоже, что вы пытаетесь выполнить ввод-вывод файла, во-первых, разбивая файл на строки и, во-вторых, разбивая каждую строку на пробелы (что, в вашем примере, разбивает их на строки длиной в 1 символ). Вместо этого вы могли бы просто взять l oop на основе диапазона через любой другой символ (тем более что каждая строка имеет одинаковое количество символов). Открытие файла, как показано ниже, позволит вообще не использовать std::stringstream
:
std::string current_line;
/* vectors here */
std::ifstream myfile("DatiMemoria.txt");
// You had int j(char_num) = 0, i(line_num) = 0;
// I renamed them to make it clear what they're for
// Also, `char_num` is not initialized until later
unsigned line_num = 0;
if (myfile.is_open())
{
while (std::getline(myfile, current_line))
{
for (int char_num = 0; char_num <= 2 * (12 - 1); char_num += 2)
{
// use:
// current_line.at(char_num)
// to get the current character. Then do what you need
// to with that character. Then, the loop will move to
// the next character.
}
line_num++;
}
}
Однако, просто чтобы я не игнорировал ваш вопрос, похоже, ваш компилятор хочет использовать другой конструктор для stringstream
чем тот, который принимает в const std::string&
. Фактически, если вы посмотрите на свой журнал ошибок, он показывает только 3 возможных конструктора. Вот почему я стараюсь избегать использования stringstream
.
. Если вы не можете использовать stringstream
, вы можете просто создать поток и затем вставить в него sh строку в два отдельных шага.
std::string str;
std::stringstream sstrm;
sstrm << str;
Или, если строки выдают ошибки,
std::string str;
std::stringstream sstrm;
sstrm << str.c_str();
Я не могу себе представить, чтобы какой-либо здравомыслящий компилятор имел проблему с этим.