LINUX.ORG.RU

с++, функции


0

0

Почему я не могу дать функции void wtofile(string filename, string text) { FILE *f; f = fopen(filename,"a+"); fprintf(f, "%s\n", text); fclose(f); } стринговые аргументы? компилятор ругается на аргументы. #include <string.h> есть, со строками все норм.


В с++ должен быть #include <string> и строки объявлены с классификаторами области видимости а именно std::string ну или делай перед использованием using std:string; или using namespace std; если ленивый и на струтуру кода наплевать.

mskmsk1985
()
Ответ на: комментарий от mskmsk1985

#include <iostream> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <sys/stat.h> #include <sys/types.h> #include <string>

using namespace std;

void wtofile(char* filename, char* text); int main(int argc, char** argv) { wtofile("test.conf", "some text"); return 0; } void wtofile(string filename, string text) { FILE *f; f = fopen(filename,"a+"); fprintf(f, "%s\n", text); fclose(f); } всеравно ругается((

kokcu
() автор топика
Ответ на: комментарий от kokcu

Товарищ уважаемый, определение и обявления функции типа должны совпадать, а у Вас что? Или уж тогда определяйте обе функции, хотя с вашими типами аргументов все равно получите неоднозначность так как "что-тоттам" это const char* а не char*

mskmsk1985
()

Just use string::c_str(), Luke !

PS: ни фопен, ни фпринтф, ни фклоз здесь не нужны.

d_a ★★★★★
()
Ответ на: комментарий от kokcu

#include <fstream>
#include <string>

using namespace std;

void wtofile(const string&, const string& );

int main(int argc, char** argv)·

wtofile("test.conf", "some text");
return 0;·


void wtofile(const string& filename, const string& text)·
{
ofstream stream(filename.c_str(),ios_base::app);
stream << text << endl;
stream.close();
}

dont
()
Ответ на: комментарий от true_admin

Зачем? Я специально поставил отображение невидимых табов и trailing spaces.
set list
setlocal listchars=tab:.\ ,trail:·

Просто быстро набрал человеку, не обращая внимания на них, и копировал код прямо с вима.

dont
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.