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

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

Войти
Регистрация
Восстановить пароль
 
MultyStepan
3 / 3 / 1
Регистрация: 08.02.2014
Сообщений: 213
#1

Управление строками - C++

14.02.2014, 17:10. Просмотров 415. Ответов 3
Метки нет (Все метки)

Всем привет!
Я изучаю с++ недавно, в как учебное пособие использую "С++ для чайников".
Пример перепечатал с книги, а он не работает!
По возможности укажите не только ошибку ну и почему нужно было сделать так, а не иначе!
Вот в чем суть:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//Concatenate - объединение двух строк, которые разделяются символом
#include<stdio.h>
#include<iostream>
 
//включаем файлы, необходимы для использования функции работы со строками
#include<string.h>
 
//объявление прототипов
 
void concatString(char szTarget[], char szSource[]);
int main(int nArg, char* pszArgs[])
{
    //считываем первую строку...
    char szString1[256];
    cout<<"Vedite stroky #1: ";
    cin.getline(szString1, 128);
    
    //...теперь вторую...
    char szString2[128];
    cout<<"Vedite stroky #2: ";
    cin.getline(szString2, 128);
 
    // присоеденим "-" к первой строке...
    concatString(szString1,"-");
    // strcat(szString1,"-");
 
    // теперь добавим втроую строку
    concatString(szString1,szString2);
    // strcat(szString1,szString2);
    
    // выводим результат на екран
cout<<"\n"<<szString1<<"\n";
return 0;
}
 
// concatString- присоеденяет строку szSource к концу строки szTarget
void concatString(char szTarget[], char szSource[])
{
    //находим конец первой строки
    int targetIndex=0;
    while(szTarget[targetIndex])
    {
        targetIndex++;
    }
    
    // присоеденяем вторую строку к концу первой
    int sourceIndex=0;
    while(szSource[sourceIndex])
    {
        szTarget[targetIndex]=szSource[sourceIndex];
        targetIndex++;
        sourceIndex++;
    }
    // вписываем конец ноль символ
    szTarget[targetIndex]='\0';
}
Ответ компилятора:
Код
1>------ Построение начато: проект: Concatenate, Конфигурация: Debug Win32 ------
1>  Concatenate.cpp
1>c:\users\администратор\desktop\програмирование на с++\concatenate\concatenate\concatenate.cpp(15): error C2065: cout: необъявленный идентификатор
1>c:\users\администратор\desktop\програмирование на с++\concatenate\concatenate\concatenate.cpp(16): error C2065: cin: необъявленный идентификатор
1>c:\users\администратор\desktop\програмирование на с++\concatenate\concatenate\concatenate.cpp(16): error C2228: выражение слева от ".getline" должно представлять класс, структуру или объединение
1>          тип: 'unknown-type'
1>c:\users\администратор\desktop\програмирование на с++\concatenate\concatenate\concatenate.cpp(20): error C2065: cout: необъявленный идентификатор
1>c:\users\администратор\desktop\програмирование на с++\concatenate\concatenate\concatenate.cpp(21): error C2065: cin: необъявленный идентификатор
1>c:\users\администратор\desktop\програмирование на с++\concatenate\concatenate\concatenate.cpp(21): error C2228: выражение слева от ".getline" должно представлять класс, структуру или объединение
1>          тип: 'unknown-type'
1>c:\users\администратор\desktop\програмирование на с++\concatenate\concatenate\concatenate.cpp(32): error C2065: cout: необъявленный идентификатор
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2014, 17:10     Управление строками
Посмотрите здесь:

Управление строками - C++
Есть ли функции в библиотеке Си (не Си++) позволяющие перезаписывать содержимое строк или менять положение индикатора позиции наподобии...

Работа со строками - C++
Подскажите пожалуйсто!!! Как удалить часть строки не создавая при этом новой строки?

Работа со строками - C++
ммм, в общем задание такое: Если честно чувствую себя тупым, читая это задание... Препод сказал, что строка вводится без пробелов...

Работа со строками - C++
char* stringRes=new char; Почему эта строка работает правильно и не выдает ошибки, хотя переменная length не константа? Почему тут не как...

Задача со строками - C++
Условие: Дана строка текста, в которой слова разделены пробелами. Необходимо: ***************************** - определить количество...

Задачка со строками - C++
Имеется одна большая строка. Нужно максимально быстро найти две одинаковые подстроки этой строки. Например: Ввод АААВВВАААВВВВСССВВВВЕЕ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
raccoonlove
Заблокирован
14.02.2014, 17:16     Управление строками #2
После заголовков добавьте
C++
1
using namespace std;
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
14.02.2014, 20:02     Управление строками #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от MultyStepan Посмотреть сообщение
Всем привет!
Я изучаю с++ недавно, в как учебное пособие использую "С++ для чайников".
Книжка, мягко скажем, не очень. Я не говорю, что нужно кидаться сразу на серьезную литературу, но если действительно хочется изучить язык, лучше взять что-нибудь получше. Например вот.

Цитата Сообщение от MultyStepan Посмотреть сообщение
Пример перепечатал с книги, а он не работает!
По возможности укажите не только ошибку ну и почему нужно было сделать так, а не иначе!
Все части стандартной библиотеки С++ содержатся в пространстве имен std. В твоем примере к стандартной библиотеке С++ относятся cout и cin, которые определены в заголовочном файле <iostream>.
Ошибка из-за которой не компилируется - отсутствие указания пространства имен. Решить можно тремя сопособами:
1) как посоветовали выше, - using namespace std ("импортирует" все имена из std в текущую область видимости, в данном случае в глобальное пространство имен);
2) явным указанием принадлежности идентификатора пространству имен - std::cin, std::cout;
3) третий способ - явное указание (опять же для текущей области видимости) для конкретного имени - using std::cin, using std::cout.

Я бы посоветовал делать так:
C++
1
2
3
4
5
6
7
8
9
10
#include<iostream>
//.....
    std::cout<<"Vedite stroky #1: ";
    std::cin.getline(szString1, 128);
    
//.....
 
    std::cout<<"Vedite stroky #2: ";
    std::cin.getline(szString2, 128);
//.....
Импортирование всех имен из std может иногда приводить к не очень приятным и неочевидным ошибкам. Особенно, если такое сделано в заголовочном файле. Говорю по собственному опыту.

Что еще следует помнить:
1) Полное имя идентификатора помещенного в namespace включает в себя имя этого пространства имен.
2) Заголовочные файлы <stdio.h>, <string.h> относятся к стандартной библиотеке Си, в С++ аналоги подключаются как <cstdio> и <cstring> (не путать с <string>) соответственно. Подключив их в С++ мы в праве ожидать, что идентификаторы из них будут доступны через пространство имен std:: (например std :: pow из <cmath>, вместо pow из <math.h>).

Добавлено через 6 минут
Добавлено:
Чтобы не тратить силы на специальное зазубривание (оно само потом запомнится) что где находится, можно пользоваться одним из онлайн справочников.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2014, 12:49     Управление строками
Еще ссылки по теме:

операциисо строками - C++
подскажите для чево и как ним пользоватса а то уже заплутлся нашол в инете что ето старый вариант и есть новый &lt;sstream&gt; . а то ппц дали...

Работа со строками. - C++
Лишние пробелы. Дана строка, состоящая из слов, разделенных пробелами. Напишите программу, удаляющую лишние пробелы. Пробел считается...

Работа с строками - C++
Здравствуйте! Есть строка (предложение) надо убрать все пробелы, в т. ч. в начали конце и получить количество слов в этом предложении. ...

Подскажите со строками - C++
С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 700 символов (длина строки текста не должна...

Работа со строками - C++
Вставить после вхождения строки str подстроку str1. Попытался сам сделать, но дальше этого работа не идёт. Нужна помощь. #include...

Работа со строками - C++
#include &quot;Stdafx.h&quot; #include &quot;conio.h&quot; using namespace std; int main(){ const char* a = {&quot;000&quot;,&quot;111&quot;,&quot;222&quot;,&quot;333&quot;}; const char b...


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

Или воспользуйтесь поиском по форуму:
MultyStepan
3 / 3 / 1
Регистрация: 08.02.2014
Сообщений: 213
16.02.2014, 12:49  [ТС]     Управление строками #4
спасибо, просто забыл написать using namespace std;
постоянно его использую, но в этот раз забыл!
Огромное спасибо за объяснение для чего оно нужно!
Yandex
Объявления
16.02.2014, 12:49     Управление строками
Ответ Создать тему
Опции темы

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