![]() |
cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*'
Всем привет!
Работаю с плюсами недавно, перехожу с PHP, и уже понял, что знакомство будет долгим :D Возникла проблема с разными типами данных в разных функциях. Вот у меня имеется простенькая функция: Цитата:
Цитата:
Цитата:
Цитата:
Что тут можно сделать? Затыкнулся в самом начале) Заранее благодарен! |
Цитата:
Попробуйте воспользоваться методом c_str. Скорее всего поможет. |
Цитата:
|
torauma, Drongo, большое спасибо!
Честно сказать, ни в коем случае не хочу никого обидеть, но я разочарован. Я почти 7 лет пишу на PHP в крупном проекте. С плюсами пришлось иметь дело, ибо решил создать один проектик для души. В общем, много говорится о языках высокого уровня, как это круто и мощно, но как же так? Проблемы возникают на каждом символе! То нельзя, то недоработано, того нет. С массивами можно работать только благодаря огромной библиотеке map, нет даже банальной str_replace! Находил в инете много примеров ее, но большинство из них - классы на пол страницы. Понятно, что языки такого рода - это просто каркас, и на нем каждый пишет так, как считает нужным, но стоит ли тратить время на такую писанину, которую можно сократить в разы? Да и оптимально ли это, когда одни и те же функции пишут люди с разным уровнем знаний и умений? Начиная писать на сях, я думал, что меня будет удивлять каждый символ, я буду говорить "Вау!", "О даааа!", Он такой классный!", "Все-таки PHP - это #&%№". А что я получил в итоге? Еле рабочий и то с кучей костылей код, и то который неизвестно как будет вести себя на разных машинах... С PHP вообще проблем такого рода никогда не было. Жаль, конечно, что он только сетевой... Розовые очки разбились, честно сказать( |
Acuna, вы слишком рано делаете выводы - вы ещё слишком мало познали С++ :)
1) в своём коде вы перемешали С и С++. std::string - это из С++ fopen - это из С 2) вот вам пример чтения из файла Код:
|
Acuna, любое познание нового начинается со слов: "забудьте всё, что знали до этого". C++ вырос на C, вобрал в себя огромный опыт разработчиков в т..ч. низкого уровня, достаточно изощрённых инженеров. PHP предназначен чтобы быстро слабать на коленке домашнюю страничку (без обид, метафора). Чтобы почувствовать красоту и мощь C++ требуется знать много мат.части, абстракций и приёмов программирования (на низком уровне). Оттуда и трудности у начинающих). Моя первая "hello c++", 15 лет назад, вообще не скомпилировалась.
Холивар по пунктам: Цитата:
Цитата:
Цитата:
1. использовать вашу любимую реализацию (из любой библиотеки) 2. заменить на месте (в строке) - for(p1=0; 1+(p1=str.find("what", p1)); str.replace(p1, 4, "to"), p1+=2) {} 3. заменить в другой буфер (если заранее выделить память - будет работать экстремально быстро) - for(p1=0; (out.append(str, p1, (p2=str.find("what", p1))-p1), p2+1); out.append("to"), p1=p2+4) {} 4. заменить с выводом в поток (позволяет офигительно экономить память в некоторых случаях) - for(p1=0; (out.write(&str[p1], (p2=str.find("what", p1))-p1), p2+1); out.write("to"), p1=p2+4) {} и т.д. 3 реализации, менее, чем на пол-страницы Цитата:
Acuna, если у вас задача сделать быстро и не париться, то С++ - не для вас. Он для сугубо дотошных людей, которым надо чтобы было идеально. Если цель узнать, что в нём другие нашли - добро пожаловать, спрашивайте - расскажем. Запаситесь терпением, там ооочень много всего. |
pva,
Цитата:
Ну и всем известно, что практически все известные крупные веб-ресурсы написаны на PHP: eBay, Amazon - это PHP и немного Java, Facebook и некая небезызвестная маргинальная социальная сеть - это чистый PHP, и т. д. А ведь это даже не сайты, они называются "продукты". О как!) Особенно когда сейчас все уходит в облака, это особенно актуально. Так что возможно дело просто в понимании того или иного вопроса? ;) Цитата:
Цитата:
|
Цитата:
|
Цитата:
Цитата:
Также придерживаюсь мнения о нужности варнингов компилятора и отладчика, ассертов и юнит-тестов |
pva, хм, интересно... Я о Java не думал... И консольные приложения тоже можно на ней писать? У меня консольное.
Ну да ладно, не каждый день попробуешь С++ все-таки ;) Iska, что Вы имеете ввиду? Если поддержку utf-8 в проектах, то окончательно на нее перешли уже давно. Функции для работы с многобайтовыми кодировками (не обязательно utf-8) были введены несколько лет назад, и за эти годы уважающие себя проекты полностью перешли на нее. Хотя изначально это было сродни проблеме 2k. Ну ничего, все всё переписали. Теперь это уже считается просто стандартом де-факто. Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Iska, а чем мешает BOM? Разве только тем, что мешает header() - но тут уже ССЗБ, если допустил какие-либо символы в выводе (кроме BOM там может оказаться много чего, даже написанного человеком - "а почему у меня header в середине скрипта не срабатывает?") до функции, которая должна вызываться до любого вывода :) |
Цитата:
|
Цитата:
|
Цитата:
|
Время: 14:04. |
Время: 14:04.
© OSzone.net 2001-