Страницы

Поиск по вопросам

четверг, 2 января 2020 г.

На С++ при выводе строки стринг в файл, записывает крякозябры

#cpp #файлы #строки #вывод


Короче, по условиям надо записывать строку в файл, если такой там нет, записать,
в противном случае, ничего не делать. Вот решил, но выдает в файл крякозябры. Первая
функция для определения количества строк в файле, там все окей работает)))

#include 
#include 
#include 
#include 
#include 

using namespace std;

int dlina(){
    char *str = new char [1024];
    int i=0;
    ifstream base("1.txt");
    while (!base.eof())
    {
        base.getline(str, 1024, '\n');
        i++;
    }
    base.close();
    delete str;
    return i;

}

int main() {
    string a;
    string b;

    ifstream fin("2.txt");

    FILE *f;
    f= fopen("2.txt", "a+");
        cin>> a;

    int len,len1;

    len1=a.length();
    len=dlina();

    bool l=false;   

    for (int i=0; i>b; 

        if(a==b) l=true;
    }

    if(l==false) {
    fwrite(&a,sizeof(string),1,f);
    }
    fin.close();
    //fclose(f);
    return 0;

}

    


Ответы

Ответ 1



записывать с++ строки с помощью с функций вот таким способом fwrite(&a,sizeof(string),1,f); нельзя. Будет писаться совсем не то, что Вы ожидаете. Даже банальная логика подсказывает, что 'sizeof(string)' не зависит от данных, которые находятся в строке. Если Вам нужно записать именно std::string в файл таким способом, делайте так fwrite(a.c_str(),(a.length()+1),1,f); P.S. если пишите на с++, то лучше использовать функции с++.

Комментариев нет:

Отправить комментарий