Запись в файл Visual C ++ - PullRequest
       1

Запись в файл Visual C ++

1 голос
/ 05 марта 2012

Я пишу в текстовый файл следующим образом:

void writeText(char* desc){
    FILE * pFile;
    pFile = fopen ("CycleTestInfo.txt","a+");
    fputs (desc,pFile);
    fclose(pFile);
}

Я встраиваю это в цикл for и хочу записать в файл цикл, в котором я нахожусь:

for(int i=0; i<cycles; i++){
    char* cycle="--NEW CYCLE "+(char)i+"---\r\n";
    writeText(cycle);
}

Однако я получаю error C2110: '+' : cannot add two pointers в строке, где я объявляю cycle.Как я могу объявить переменную, чтобы я мог включить номер цикла i, а также добавить строку в обе стороны?

Спасибо за помощь!

Ответы [ 3 ]

3 голосов
/ 06 марта 2012

Вы можете использовать fprintf для записи отформатированного текста в файл:

fprintf(FILE, "--NEW CYCLE %d ---\r\n", i);
1 голос
/ 05 марта 2012

Это не C ++, а C. a char * не строка, это указатель на символ или начало нескольких значений символа.

В C ++ вы используете std::string в качестве класса строки.

Однако правильный способ вывода текста:

os << "--NEW CYCLE " << i << "---\r\n";

где os - выходной поток

Если вы хотите создать строку таким образом, используйте ostringstream в качестве класса потоковой передачи, а затем используйте .str(), чтобы получить строку из него.

1 голос
/ 05 марта 2012

Это не то, как вы объединяете строки в C ++.

Вы можете использовать sprintf или std::string.

Последний более C ++ - ish ::

std::string cycle("--NEW CYCLE");
cycle += (char)i;
cycle += "---\r\r";

writeText(cycle.c_str();

Обратите внимание, что вы также должны изменить функциюподпись:

void writeText(const char* desc)

, поскольку string::c_str() возвращает const char*.

Или вы можете использовать stringstream, но в этом случае это немного излишне.Хотя стоит взглянуть на это.

Причина, по которой вы получаете ошибку, состоит в том, что "--NEW CYCLE " - это const char* в C ++, а не std::string.

Вы могли бы отредактируйте свою строку для работы:

const char* cycle= (std::string("--NEW CYCLE ")+(char)i+"---\r\n").c_str();

но я бы не стал этого делать.Это выглядит некрасиво.

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