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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
AnreyKazakov
Заблокирован
#1

Можно ли в массив чаров считать строку полностью? - C++

12.09.2012, 12:10. Просмотров 1726. Ответов 19
Метки нет (Все метки)

У меня получается считать только первое слово, понимаю что есть функция getline() и еще я какую-то похожую видел, но желательно без этих средств обойтись, как-то бы компилятор убедить в массив считывать пока до конца введенной строчки не доползет....
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
int main(){
    char qip[100];
    std::cin>>qip;
    
    for(char* q=qip;((q!=qip+100)&&(*q!='\0'));++q){std::cout<<*q;}
    std::cout<<std::endl;
    return 0;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2012, 12:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Можно ли в массив чаров считать строку полностью? (C++):

Считать символы из вектора в массив чаров - C++
Задача из вектора string перекидать значения в массив чаров, каждый элемент вектора это должен быть один из массивов... Я не могу сделать...

Как полностью считать текстовый файл в массив символов? - C++
ifstream file(name); char line; char *text = new char; char symbol; int i = 0; while (!file.eof()) { file.getline(line,...

Массив строк как массив указателей на массивы чаров - C++
Я всё правильно сделал? char* Files; Files = &quot;AHEAD&quot;; Files = &quot;LEFT&quot;; Files = &quot;RIGHT&quot;; Files = NULL; int searchFile()...

Очистить массив чаров - C++
#include &quot;stdafx.h&quot; #include &lt;algorithm&gt; #include &lt;iostream&gt; #include &lt;locale&gt; #include &lt;windows.h&gt; #include &lt;sstream&gt; using...

Можно ли считать с консоли строку по шаблону? - C++
например, scanf можно считать число и записать в переменную. int n; scanf(&quot;%d&quot;, &amp;n); а если строка формата &quot;command val&quot;,...

считать строку чисел в массив - C++
#include &lt;sstream&gt; #include &lt;string&gt; #include &lt;iostream&gt; using std::cout; using std::string; using std::istringstream; using...

19
AnreyKazakov
Заблокирован
12.09.2012, 14:59  [ТС] #16
Спасибо всем, в общем переписал вот так:
C++
1
2
3
4
5
6
7
8
#include <iostream>
int main(){
    using std::cin;using std::cout;using std::endl;
    char qip[10];
    cin.getline(qip,10);
    cout<<qip<<endl;
    return 0;
    }
НО, осталась одна проблема, с переполнением массива, не делать же его размером в 10000 символов, а если объявлять так:
C++
1
char* qq=new char[size];
то надо заранее знать переменную size, тупик....
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
12.09.2012, 15:10 #17
Правильно. Если не хватает размера, то надо расширять массив. И всё это уже есть в std::string.
1
Andsteadur
153 / 137 / 3
Регистрация: 23.05.2009
Сообщений: 275
12.09.2012, 15:12 #18
Можно собезьянничать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
 
int main(){
    using std::cin;using std::cout;using std::endl;
    std::string str;
    std::getline(cin, str);
    char *qip = new char[str.size() + 1];
    std::copy(str.begin(), str.end(), qip);
    qip[str.size()] = '\0';
    cout<<qip<<endl;
    return 0;
}
1
AnreyKazakov
Заблокирован
12.09.2012, 15:27  [ТС] #19
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Если не хватает размера, то надо расширять массив
А можно во время считывания вот в этом месте
C++
1
cin.getline(qip,1000);
узнать сколько символов считывается и если они не влазят в старый массив создать новый куда они и запишутся?
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
12.09.2012, 16:21 #20
Вызвать метод gcount() сразу же после getline(), он скажет, сколько байт было реально считано и записано. (Естессно, их будет не больше 999 + один нулевой в конце — в итоге тысяча, передаваемая как аргумент в getline.) Учтите, что '\n' в конце, если лимит в 999 символов не наступит раньше, читается из потока, но не пишется в строку (и не входит в значение gcount()). Всё, что осталось в потоке свыше 999 символов, там и останется. Можно достать следующим getline().
0
12.09.2012, 16:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2012, 16:21
Привет! Вот еще темы с ответами:

Считать строку в динамический массив - C++
помогите считать строку цифр неизвестной длины и перевести в массив целых чисел , код на си обычном

Порядок байт. Массив чаров приводится к типу unsigned int. - C++
Есть массив из 4 char. Массив приводится к типу unsigned int и затем данные извлекаются в переменную типа unsigned int. Нужно, чтобы байты...

Считать строку чисел в массив int - C++
Доброго времени суток! Подскажите, как можно считать из консоли строку чисел в массив int. А то туплю чет((

Считать строку в массив символов, который является членом класса - C++
гетлайны, гетси, манипуляторы ws не работают (не могу заставить) #include &lt;iostream&gt; using namespace std; class employee { ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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