| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Шаблон string |
| Автор: tonchitos 16.3.2008, 19:11 |
| Вот хочу вывести в файл строку и прочитать строку, да компилятор ругаецо stream.write(Name,Name.length()); cannot convert parameter 1 from 'const std::string' to 'const char *' как быть? |
| Автор: Daevaorn 16.3.2008, 19:21 | ||
|
| Автор: tonchitos 16.3.2008, 19:28 |
| мерси большое! Добавлено через 4 минуты и 46 секунд а при чтении? ведь эта ф-ия преобразует в чар. а как с обратным случаем быть? |
| Автор: maxim1000 16.3.2008, 19:59 |
| чтобы прочитать, нужно решить в каком виде будет храниться информация о длине строки примеры: 1. весь файл предназначен для хранения только этой строки, можно использовать его размер 2. размер пишется перед строкой в каком-нибудь формате 3. конец строки представляется каким-то специальным символом ИМХО, наиболее удобен второй способ (первый создаст проблемы. если захочется хранить что-то ещё после строки, третий не позволяет узнать, сколько нам нужно памяти для чтения строки, пока не будет прочитан последний символ) соответственно выбранному способу нжно и записывающий код реализовать... |
| Автор: tonchitos 16.3.2008, 20:09 |
| ну допустим 2й способ Добавлено через 2 минуты и 18 секунд но вроде ф-ия getline читает строку до конца строки. Можно подробнее? я должна записать в начало размер, а после, читать посимвольно? |
| Автор: andrew_121 16.3.2008, 20:34 | ||
|
| Автор: tonchitos 16.3.2008, 20:34 |
| cannot convert parameter 2 from 'const std::string' to 'std::basic_string<_Elem,_Traits,_Ax> &' вот что выдает... на std::string Name; std::getline(stream,Name); |
| Автор: tonchitos 17.3.2008, 00:01 |
| Ой, народ, а эт че: stream >> pole1; stream.ignore(9); stream >> pole2; stream.ignore(9); stream >> level; error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'const int' (or there is no acceptable conversion) |
| Автор: bsa 17.3.2008, 00:09 | ||
operator>> - это чтение из потока в переменную. А вот чтения из потока в константу не существует по определению |
| Автор: tonchitos 17.3.2008, 00:39 |
| И, и что делать? У меня не константа. Просто инт... |
| Автор: bsa 17.3.2008, 00:44 |
| где у тебя? я кода не вижу. Скорее всего, сама структура константная (а все ее поля наследуют константность). |
| Автор: tonchitos 17.3.2008, 00:49 | ||
| class Node { std::vector<Node> childs; std::string Name; int pole1; int pole2; int level; Добавлено через 10 минут и 31 секунду
|
| Автор: bsa 17.3.2008, 01:08 |
| строка 42: std::istream& readFile (std::istream &stream) const; const означает, что эта функция не меняет элементы класса, так как для нее они константные. В данном случае, ключевое слово const здесь лишнее. Так как сама суть метода readFile подразумевает изменение элементов класса. С деревом разобралась или совсем нет? Почему на http://forum.vingrad.ru/forum/topic-200538.html так и не ответила? |
| Автор: tonchitos 17.3.2008, 01:21 | ||||
| теперь ответила Добавлено через 2 минуты и 47 секунд Спасибо, конст убрала - помогло Добавлено через 10 минут и 25 секунд вот у меня ф-ии чтения дерева из файла и запись дерева в файл. Плиз. Проверьте их...
Описание класса дерево я уже приводила... Добавлено через 11 минут и 28 секунд если я правильно поняла, то игнор пропускает символы в потоке. А \n пропускается автоматически в гетлайн, да? И переводится ли на новую строку? |
| Автор: bsa 17.3.2008, 01:37 |
| проверку я думаю проще тебе провести. все-таки твоя программа. Лучше посмотри мой вариант в той ветке. Он хоть и не такой красивый файл создает, зато читает его просто. |
| Автор: tonchitos 17.3.2008, 01:45 |
| ну а насчет игнора - я правильно поняла смысл ф-ии? |
| Автор: tonchitos 17.3.2008, 02:58 |
| Блин :( Как определить пуст ли файл. А что то ф-ию не найду. |
| Автор: tonchitos 17.3.2008, 03:42 |
| tvstruct.item.pszText =TEXT(i->Name.c_str()); error C2065: 'Li' : undeclared identifier error C2228: left of '.c_str' must have class/struct/union error C2227: left of '->Name' must point to class/struct/union/generic type почему, блин? |
| Автор: dizzy1984 17.3.2008, 06:25 | ||||
TEXT это макрос, в моем случае он определяется как
Т.е как склейка символа 'L' с тем, что ему дают в качестве аргументов. Попробуй убрать его
|
| Автор: tonchitos 17.3.2008, 10:36 |
| не, не фурычит, надо преобразовать из char * в LPWSTR |
| Автор: tonchitos 17.3.2008, 11:04 |
| И еще, господа. Мне нужно открыть файл, если его нет - создать. std::ifstream inFile; inFile.open("Tree.txt",0x01); if (!inFile) { // ошибка при открытии MessageBox(0,TEXT("Error!"),TEXT("File opening Error"),MB_OK); return; } файла нет выдает ошибку. какое тогда должно быть значение второго параметра в inFile.open("Tree.txt",0x01); чтобы файл создавался? |
| Автор: bsa 17.3.2008, 11:45 |
| tonchitos, ifstream - это файл для чтения (input file stream). Какой смысл его создавать, когда ты из него только читать будешь? если тебе нужен поток для чтения и записи, то используй std::fstream. Он по умолчанию открывается для чтения и записи (ну и создается при необходимости). Что за 0x01? Что это? Если тебе нужно указывать режим открытия, то используй std::ios_base::<mode> (std::ios_base::in, std::ios_base::app, std::ios_base::out...) |
| Автор: tonchitos 17.3.2008, 13:48 | ||
| вот теперь такая фигня: при добавлении диалога надо прочитать файл и записать деревяшку, потом вывести только верхних потомков
где-то не фурычит. |
| Автор: bsa 17.3.2008, 13:55 |
| Боюсь, с MFC это в другой раздел. |