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

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

Войти
Регистрация
Восстановить пароль
 
akaelwins
1 / 1 / 2
Регистрация: 11.04.2012
Сообщений: 17
#1

Строки в стиле C - C++

05.12.2012, 22:57. Просмотров 372. Ответов 4
Метки нет (Все метки)

Добрый вечер, решил поковыряться со строками в стиле C и наткнулся на следующую проблему.
В 13-й строке компилятор ругается на то, что str1 - не l-значение, не пойму почему.

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 <cstring>
#include <cstddef>
using namespace std;
 
int main() {
    char str1[] = "The first string literal";
    char str2[] = "The second one";
    const size_t copy_size = 5;
    strncpy(str1, str2, copy_size);
    while (*str1) {
        cout << *str1;
        ++str1;
    }
    cout << endl;
    if (strcmp(str1, str2) > 0)
        cout << "The first char array is bigeer" << endl;
    if (strcmp(str1, str2) < 0)
        cout << "The second char array is bigeer" << endl;
    if (strcmp(str1, str2) == 0)
        cout << "Arrays are equal" << endl;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2012, 22:57     Строки в стиле C
Посмотрите здесь:

C++ Строка в стиле С
Инициализация вектора в стиле С++0х C++
C++ Ввод/Вывод в стиле С++
Напишите программу, присваивающую значения элементов списка указателей на символьные строки в стиле С (тип char* ) элементам вектора строк C++
строки в стиле С - cstdlib C++
Реверс строки в стиле Си C++
Строки в стиле Си. Замена символов C++
C++ Строки в стиле С
Строки в стиле C C++
C++ Строки в стиле C. Часть 2
C++ Динамическое выделение памяти под строки в стиле Си
Оформление в стиле виндоус C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12537 / 7099 / 797
Регистрация: 27.09.2012
Сообщений: 17,521
Записей в блоге: 2
Завершенные тесты: 1
05.12.2012, 23:04     Строки в стиле C #2
str1 - это имя массива - константное значение
David Sylva
 Аватар для David Sylva
1284 / 946 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
05.12.2012, 23:09     Строки в стиле C #3
Согласен Croessmah str1 константное значение, вот почитай статью, так как раз описано очень интересно
http://www.cyberforum.ru/blogs/18334/blog97.html
akaelwins
1 / 1 / 2
Регистрация: 11.04.2012
Сообщений: 17
05.12.2012, 23:11  [ТС]     Строки в стиле C #4
А имя массива разве не является указателем на его первый элемент? Ведь в функции
C++
1
strncpy(str1, str2, copy_size);
в качестве аргументов выступают как раз указатели на первые элементы соответствующих массивов.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12537 / 7099 / 797
Регистрация: 27.09.2012
Сообщений: 17,521
Записей в блоге: 2
Завершенные тесты: 1
05.12.2012, 23:12     Строки в стиле C #5
Цитата Сообщение от akaelwins Посмотреть сообщение
А имя массива разве не является указателем на его первый элемент?
Является, но менять его нельзя.

можно сделать так:
C++
1
2
3
4
5
     char * p=str1;
    while (*p) {
        cout << *p;
        ++p;
    }
Yandex
Объявления
05.12.2012, 23:12     Строки в стиле C
Ответ Создать тему
Опции темы

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