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

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

Войти
Регистрация
Восстановить пароль
 
 
Temirlan90
133 / 133 / 8
Регистрация: 30.09.2010
Сообщений: 333
#1

Строки - C++

25.01.2011, 15:40. Просмотров 590. Ответов 16
Метки нет (Все метки)

Написать программу, которая удаляет из введенной с клавиатуры строки начальные пробелы.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
 
int main() {
    std::string s;
    getline(std::cin, s);
    while(s[0] == ' ') {        
        for(int i = 0; i < s.length() - 1; i++) {
            s[i] = s[i + 1];
        }
        //s[s.length()] = '\0';
    }
    std::cout << s;
    system("pause >> void");
}
Почему у меня последний символ копируется столько раз, сколько я убрал пробелов?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2011, 15:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строки (C++):

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

Добавить строки, начиная со строки К1 и до строки К2, в динамический массив строк - C++
Есть динамический массив строк. Заполняется, т.е. размер его уже известен будет. Но дальше нужно сделать задание: &quot;Добавить строки, начиная...

Удалить строки динамической матрицы, начиная со строки К1 и до строки К2 - C++
Сформировать динамический двумерный массив, заполнить его случайными числами и удалить строки, начиная со строки К1 и до строки К2 вот...

Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой строки, с которой вторая строка содер-жится в ней - C++
Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой строки, с которой вторая строка...

Указать номер строки, максимально удаленной от первой строки заданной матрицы - C++
Задание: Расстояние между k-й и 1-й строками квадратной матрицы А опеределяется как r = сумма от j=1 до N от (abs(akj)*abs(a1j)). Указать...

Упорядочить символы строки B в алфавитном порядке и удалить латинские буквы из строки A - C++
&quot;Даны строки A и B. Если в A есть латинские буквы, а в B нет повторяющихся символов, то упорядочить символы B в алфавитном порядке и...

16
bobrovskii
59 / 59 / 3
Регистрация: 22.01.2011
Сообщений: 187
25.01.2011, 16:05 #2
C
1
2
3
4
5
6
7
8
9
char *ltrim(char *str)
{
    while (*str == ' ') str++;
    return str;
}
void main(void) {
    char *str = "    bla-bla-bla....";
    fprintf(stdout, "(%s)", ltrim(str));
}
Куда по-проще.
1
Temirlan90
133 / 133 / 8
Регистрация: 30.09.2010
Сообщений: 333
25.01.2011, 16:09  [ТС] #3
bobrovskii, а можно это в мэйне сделать, я просто до функции ещё не дошел=)
fprintf stdout не совсем ясно, что это?
0
bobrovskii
59 / 59 / 3
Регистрация: 22.01.2011
Сообщений: 187
25.01.2011, 16:16 #4
C
1
2
3
4
5
6
7
void main(void) {
    char *str = "    bla-bla-bla....";
    
    while (*str == ' ') str++;
    
    std::cout << str << endl; // так вроде)) на iostream
}
Цитата Сообщение от Temirlan90 Посмотреть сообщение
fprintf stdout не совсем ясно, что это?
тоже что и std::cout
1
Temirlan90
133 / 133 / 8
Регистрация: 30.09.2010
Сообщений: 333
25.01.2011, 16:19  [ТС] #5
char *str = " bla-bla-bla....";
bobrovskii, это массив чаровских элементов, и вот это звездочка это указатель?
0
bobrovskii
59 / 59 / 3
Регистрация: 22.01.2011
Сообщений: 187
25.01.2011, 16:21 #6
Temirlan90, да
1
Temirlan90
133 / 133 / 8
Регистрация: 30.09.2010
Сообщений: 333
25.01.2011, 16:37  [ТС] #7
bobrovskii, а я вот делаю что бы с клавы считать он мне кучу всякого выдает))) я просто с указателем не работал=) как сделать что бы во время программы считывать?

Добавлено через 11 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int main() {
        char str1[1000];
        char *str;
        std::cin.getline(str1, '\n');
        str = str1;              
        while (*str == ' ') {
              str++;
        }        
        std::cout << str; 
        system("pause >> void");
}
но лажу выдает то правильно то нет)
0
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
25.01.2011, 16:47 #8
Это
C++
1
std::cin.getline(str1, '\n');
попробуй заменить на
C++
1
 std::cin.getline(str1, 10000);
1
bobrovskii
59 / 59 / 3
Регистрация: 22.01.2011
Сообщений: 187
25.01.2011, 16:53 #9
о,о... отходил.
asics, прав)))
0
Temirlan90
133 / 133 / 8
Регистрация: 30.09.2010
Сообщений: 333
25.01.2011, 16:55  [ТС] #10
asics, bobrovskii, не могу понять ведь у меня массив макс 1000 элементов, а тут 10000 это элементов или его 10000-ый номер элемента, если второе то это как возможно??!! да и с первым в мозгу не укладывается, что за логика???
0
bobrovskii
59 / 59 / 3
Регистрация: 22.01.2011
Сообщений: 187
25.01.2011, 16:56 #11
1000 он так для примера)
1
Temirlan90
133 / 133 / 8
Регистрация: 30.09.2010
Сообщений: 333
25.01.2011, 16:58  [ТС] #12
bobrovskii, так когда я ставил 1000 а не 10000 у меня выдавало криво, почему?)
0
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
25.01.2011, 17:04 #13
Вот з стрингом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <cctype>
 
int main()
{
    std::string str("      bla bla bla");
    std::cout << str << std::endl;
    int i = 0;
    while(!isalpha(str[i++]) && i--)
       str.erase(i, 1);
    std::cout << str << std::endl;
    return 0;
}
1
Temirlan90
133 / 133 / 8
Регистрация: 30.09.2010
Сообщений: 333
25.01.2011, 17:13  [ТС] #14
while(!isalpha(str[i++]) && i--)
asics, isalpha я понял что это, у вас выходит str[i++] => это пробег по строке а вот i-- => удаления пробелов?
0
bobrovskii
59 / 59 / 3
Регистрация: 22.01.2011
Сообщений: 187
25.01.2011, 17:14 #15
Temirlan90, у тебя баг в этой строке был std::cin.getline(str1, '\n');
то есть во втором парамтре надо указать размер массива, если char str1[512] то std::cin.getline(str1, 512);
1
25.01.2011, 17:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2011, 17:14
Привет! Вот еще темы с ответами:

Чтение через fscanf_s части строки с пробелом (и запись этой же строки) - C++
нужно записать в файл строку, содержащую через табуляцию int, char, char, char, float, int. Далее необходимо из такой же строки вывести...

Как первые два символа строки переставить в конец этой строки? - C++
Собственно вопрос

Найти среднее арифметическое каждой строки матрицы и отсортировать строки по возрастанию - C++
Дана квадратная матрица. Найти среднее арифметическое каждой строки и отсортировать строки по возрастанию этих характеристик

Как считать строки из файла, если там больше одной строки? - C++
Как считать строки из файла в массив. Если в файле одна строка, то нет проблем, но если несколько, то при использовании функции fgets ...


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

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

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