Использование fputs с аргументом типа string - PullRequest
0 голосов
/ 05 января 2012

Я использую fputs в C ++ для записи строки в файл.

fputs (const char*, FILE*);

Если я использую простое утверждение, как,

fputs ("information", pFile);

все в порядке и "информация" будет записана в файл. Но если я напишу переменную типа,

std::vector<std::string>

в файл, некоторые не-ascii символы хранятся в файле. Нужно ли использовать метод для преобразования типа std::vector<std::string> в формат, который может распознавать fputs?

Ответы [ 2 ]

3 голосов
/ 05 января 2012

Правильно, fputs не понимает, как std::vector располагается в памяти.

На самом деле вы должны были получить ошибку компиляции, когда пытались передать std::vector в fputs(). Вы пытались обойти ошибку, добавив приведение или что-то?

0 голосов
/ 05 января 2012

Используйте

fprintf ( pFile, "%s", iterVar.at(currentRun).c_str() )

вместо

fprintf ( pFile, "%s", iterVar.at(currentRun).data() )

Вы не хотите использовать data(), поскольку отсутствует трейлинг \0.

(Этот код основан на комментарии спрашивающего к ответу @ GregHewgill, где iterVar имеет тип vector<string>.)

...