Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.94
GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
#1

Список List. Добавляем строки типа char - C++

16.04.2012, 14:37. Просмотров 2631. Ответов 6
Метки нет (Все метки)

Собственно, не получается в List добавлять корректно строки char.
Нужно получить список из входных строк, а получается список из первых символов входных строк char.
например.
ВХОД: qwerty
werty
erty
rty
ВЫХОД: q w e r
НУЖНО: qwerty werty erty rty
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <list>
#include <string>
 
using namespace std;
 
int main()
{
    int i;
    int k,j;
 
    char *chat_Name=new char[32];
 
    std::list<char> User_Names_chat;
 
    for(i=0;i<5;i++)
    {
        cin.getline(chat_Name,32);
        User_Names_chat.push_back(*chat_Name);
    }
 
    for(std::list<char>::iterator it = User_Names_chat.begin(); it != User_Names_chat.end(); it++)
        std::cout<<*it<<" ";
}
Проверил на string - прекрасно работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <list>
#include <string>
 
using namespace std;
 
int main()
{
    int i;
    int k,j;
    string str_Name;
    
    std::list<string> User_Names;
 
    for(i=0;i<5;i++)
    {
        cin>>str_Name;
        User_Names.push_back(str_Name);
    }
 
    for(std::list<string>::iterator it = User_Names.begin(); it != User_Names.end(); it++)
        std::cout<<*it<<" ";
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2012, 14:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Список List. Добавляем строки типа char (C++):

Список типа массива char - C++
Здравствуйте! Не могу понять почему не работает такой код: std::list&lt;char&gt; m_logicalDrivesList; nameLogicalDrives = char(65 + i);...

Аргумент типа char (*)[1000] несовместим с параметром типа char** - C++
Здравствуйте! Есть вот такая структура: #define max 1000 struct expr { char s; int index; };

Добавление в массив типа char * одного элемента типа char - C++
Дан класс Строка, содержащий указатель на char - адрес динамически выделенной для размещения символов строки памяти и длину строки. Нужен...

Аргумент типа char** не совместим с параметром типа const char* - C++
Программа должна позволять заносить в структуру данные и выводить на экран информацию о поездах, следующих до определенной станции: ...

Удаление символов из строки типа char - C++
Существует ли какая-либо функция для удаления элементов строки char? Или придется &quot;сдвигать&quot; массив в цикле? Может быть есть еще какие-то...

Преобразование части строки типа char в число - C++
Доброго времени суток! Подскажите, как преобразовать строку типа char в число? Пример: Есть строка с датой в формате чч-мм-гг &quot;05-05-14&quot;....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Байт
Эксперт C
16063 / 10332 / 1540
Регистрация: 24.12.2010
Сообщений: 19,472
16.04.2012, 14:55 #2
C++
1
User_Names_chat.push_back(chat_Name);
строка 19 - убери звезду
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 3
16.04.2012, 14:58 #3
Байт, Эм. Тогда и список должен быть типа std::list<char*>. И вообще со списком лучше указатели не юзать-с.
0
GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
16.04.2012, 16:11  [ТС] #4
Байт,
тогда появляется ошибка
Код
error C2664: void std::list<_Ty>::push_back(_Ty &&): невозможно преобразовать параметр 1 из "char *" в "char &&"
Цитата Сообщение от ForEveR Посмотреть сообщение
И вообще со списком лучше указатели не юзать-с
а что юзать? строки string?
тогда появляется вопрос как string потом перевести в char?
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 3
16.04.2012, 16:17 #5
GBIT,
C++
1
std::string::c_str()
1
GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
16.04.2012, 18:18  [ТС] #6
ForEveR,
согласен. уже погуглил)

итак. плавно перехожу к собственно из-за чего весь сыр бор

написал код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void Write_Substance()
{
    string Name_Substance;
    DWORD buf;
        HANDLE hFile;
        const char* str33;
 
    std::cin>>Name_Substance;
    str33=Name_Substance.c_str(); 
    //cout<<str33;
 
    char *NameF = new char [MAX_PATH];
    strcpy(NameF,"database.txt");
 
    hFile = CreateFileA(NameF,
        GENERIC_READ|GENERIC_WRITE,
        0,
        0,
        OPEN_ALWAYS,
        0,
        0);
 
    WriteFile (hFile, str33, sizeof(str33), &buf, NULL);
 
}
по идее фун-я должна писать в файл ту строку которую я напишу. но записываются только первые 4 символа. почему?

Добавлено через 6 минут
понял что дело в 23 строке.
а именно в sizeof(str33). но почему sizeof(str33)=4 ???
поставил туда 10. записало 10 символов из str33
если str33 < 10 то в файле текст + мусор

Добавлено через 1 час 21 минуту
разобрался. дело в том что sizeof(char*)=4.
нужно через size() отдельно где-то хранить еще и длину string
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 3
16.04.2012, 18:28 #7
GBIT, Для char* есть функция strlen.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2012, 18:28
Привет! Вот еще темы с ответами:

Сравнение строки в структуре с переменной типа char - C++
Есть некая функция Х которая возвращает кол-во строк структуры Poezda a, строка a.StNazn в которой равна введеному с клавиатуры c и создает...

Считать с файла строку типа char до знака окончания строки - C++
Всем доброго времени суток. Мне нужно считать с файла строку типа char до знака окончания строки ( '\0'). Как мне это сделать? Я...

"Аргумент типа char несовместим с параметром типа const char" - C++
Программа должна перевести все символы до * в число,но что то пошло не так. P.S прошу не ругать. #include &lt;stdio.h&gt; #include...

Ошибка "аргумент типа char несовместим с параметром типа char*" - C++
#include &lt;iostream&gt; using namespace std; const int N=4; //размер очереди struct Queue { int data; //массив данных char...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.04.2012, 18:28
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru