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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 64, средняя оценка - 4.69
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,242
Завершенные тесты: 1
#1

не понимаю момент \0 - C++

27.10.2009, 19:51. Просмотров 8386. Ответов 26

C++
1
2
3
4
5
6
7
string s;
cin>>s;
int n=0;
int w=0;
while(s='\0'){
++n;
if(s=' ')++w;
ошибки
Error 1 error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion) c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\code.cpp 13 proba
Error 2 error C2451: conditional expression of type 'std::basic_string<_Elem,_Traits,_Ax>' is illegal c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\code.cpp 16 proba
Error 3 error C2451: conditional expression of type 'std::basic_string<_Elem,_Traits,_Ax>' is illegal c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\code.cpp 18 proba
что не так?Объясните мне когда нужн юзать \0????или же в данном случае что буде правильнее?как объяснить компилятору,что мне нужен конец строки?

Добавлено через 57 секунд
и EOF попробовал,тоже самое
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2009, 19:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не понимаю момент \0 (C++):

Не Понимаю С++ - C++
есть какие нибудь проги которые обясняют как раскладывать задачку(пример) написания в С++

С++ не понимаю - C++
1. сумму элементов массива с нечетными номерами; 2. сумму элементов массива, расположенных между первым и последним отрицательными...

Не понимаю CALLBACK - C++
Всем привет! Помогите пожалуйста разобраться: хочу в коснтрукторе объекта передавать указатель на функцию этого объекта и потом...

Указатели. Не понимаю - C++
Разбираю указатели, слегка запнулся на одном месте. У меня есть функция: void Dit(int &amp;x) { x *= 2; } Использую я в...

isdigit() не понимаю - C++
Здрасти всем! Не могу понять, почему isdigit() неверно себя ведет. Точнее абсолютно наоборот. #include &lt;iostream&gt; const int...

не понимаю ошибку - C++
Написать программу, решающую задачу линейного поиска элемента в заданном вещественном массиве. _____ при вводе единицы выводит 0, ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
=DelFin=
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 8
27.10.2009, 19:57 #2
C++
1
2
3
4
5
6
7
char s[16];
cin>>s;
int n=0;
int w=0;
while(s=='\0'){
++n;
if(s==' ')++w;
Оператор '=' присвоения в условии цикла не стоит использовать, лучше все таки оператор равенства '=='. Это из того что вижу, а вообще целиком можно посмотреть код?

Типа string в си нет и небыло, есть тип char[]. В скобках размерность.

прр... Идея понятна... Зачем сравнивать всю строку с нуль символом? Операция недопустимая, на счет нуль символа ты прав
1
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,242
Завершенные тесты: 1
27.10.2009, 19:58  [ТС] #3
=DelFin=,
Error 1 error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion) c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\code.cpp 13 proba
Error 2 error C2678: binary '==' : no operator found which takes a left-hand operand of type 'std::string' (or there is no acceptable conversion) c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\code.cpp 16 proba
Error 3 fatal error C1903: unable to recover from previous error(s); stopping compilation c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\code.cpp 16 proba
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
27.10.2009, 20:10 #4
МедведЪ, в Си юзай символ конец строки
в С++ есть str.length() - длина строки. str[str.length()-1] - последний символ строки.
1
=DelFin=
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 8
27.10.2009, 20:14 #5
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"
 
using namespace std;
int main()
{
char s[16]; //обьявляем строку длинной 16 символов
cin >> s; // вводим через поток ввода
int i; //счетчик цикла
int n=0; //счетчики
int w=0;
 
for (i=0;i<15;i++) // перебираем все символы
{
    if (s[i]='\0') ++n; //символ конца, добавить к счетчику
    else
    if(s[i]=' ') ++w; // пробел, добавить 1 к счетчику
}
 
сout << "Probels:" << w << endl;
сout << "Ends:" << n << endl;
 
return 0; //завершиться
}
Присоединяюсь к предидущему посту, если программа не учебная. Полностью твоя прога выглядит так.
0
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,242
Завершенные тесты: 1
27.10.2009, 20:16  [ТС] #6
TanT, у меня половина С половина С++в си как это делать?ну конец строки?У меня ошибки

Добавлено через 1 минуту
Цитата Сообщение от =DelFin= Посмотреть сообщение
if (s[i]='\0') ++n;
а это уже не массив?мне надо со string
0
=DelFin=
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 8
27.10.2009, 20:18 #7
Ну, в С строка есть массив символов, это стандарт языка. В других языках это тоже массив символов, только в С запись более наглядно отражает сущность строки.
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
27.10.2009, 20:19 #8
Цитата Сообщение от МедведЪ Посмотреть сообщение
TanT, у меня половина С половина С++в си как это делать?ну конец строки?У меня ошибки

Добавлено через 1 минуту

а это уже не массив?мне надо со string
давай отделим мух от котлет. на каком языке пишешь С/С++?
и второй самый главный вопрос: зачем тебе конец строки или, иначе, какова суть задания?
0
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,242
Завершенные тесты: 1
27.10.2009, 20:22  [ТС] #9
Цитата Сообщение от TanT Посмотреть сообщение
какова суть задания?
ну просто определисть длину строки(символы) и подсчет слов в строке..

Цитата Сообщение от TanT Посмотреть сообщение
давай отделим мух от котлет. на каком языке пишешь С/С++?
С++ну так что,варианты есть?
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
27.10.2009, 20:24 #10
ещё один важный момент.
cin>>s - берёт строку до пробела или энтера, скомпили и введи две строки через пробел

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    string s,ss;
    cin>>s>>ss;
    
    cout<<"s:"<<s<<"; ss:"<<ss<<endl;
 
    system("pause");
    return 0;
}
Добавлено через 54 секунды
длина строки str.length()
0
=DelFin=
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 8
27.10.2009, 20:24 #11
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
#include <iostream>
 
 
using namespace std;
int main()
{
char s[16]; //обьявляем строку длинной 16 символов
cin >> s; // вводим через поток ввода
int i; //счетчик цикла
int n=0; //счетчики
int w=0;
 
for (i=0;i<15;i++)
{
    if (s[i]='\0') n=i-1;
    else
    if(s[i]=' ') ++w;
}
w=w+1;
 
сout << "Words:" << w << endl;
сout << "Dlina:" << n << endl;
 
 
return 0;
}
0
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,242
Завершенные тесты: 1
27.10.2009, 20:27  [ТС] #12
Цитата Сообщение от TanT Посмотреть сообщение
cin>>s - берёт строку до пробела или энтера, скомпили и введи две строки через пробел

Цитата Сообщение от TanT Посмотреть сообщение
cin>>s>>ss;
я этот трюк не знал,как понять?

Добавлено через 20 секунд
Цитата Сообщение от TanT Посмотреть сообщение
длина строки str.length()
я знаю,но сам хочу написать

Добавлено через 1 минуту
Цитата Сообщение от =DelFin= Посмотреть сообщение
char s[16]; //обьявляем строку длинной 16 символов
Цитата Сообщение от МедведЪ Посмотреть сообщение
мне надо со string
я ведь написал
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
27.10.2009, 20:34 #13
вот тебе простой пример на твою задачу
умные человеки типа Rififi сказали бы что для поиска пробела надо ползоваться find, но это тебе пример чтобы познакомиться со 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
24
25
26
27
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    string s;
    int count=0, countWord=0, countPrev=0;
 
    getline(cin,s);  // получить строку до нажатия энтер (по умолчанию)
    cout<<"s:"<<s;
 
    while (count<s.length())
    {
        if (s[count]==' ')
        {
            ++countWord;
            cout<<"\n word: "<<countWord<<" length: "<<count-countPrev;
            countPrev=count;
        }
        ++count;
    }
 
    system("pause");
    return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от МедведЪ Посмотреть сообщение

я этот трюк не знал,как понять?
cin>>s>>ss; это тоже что cin>>s; cin>>ss;
в книжках пишут
0
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,242
Завершенные тесты: 1
27.10.2009, 20:38  [ТС] #14
TanT,
Error 1 error C3861: 'getline': identifier not found c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\code.cpp 15 proba
Error 2 error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion) c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\code.cpp 16 proba
Добавлено через 34 секунды
Цитата Сообщение от TanT Посмотреть сообщение
в книжках пишут
у меня щас КиР а в Си cout нету

Добавлено через 12 секунд
cin то есть
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
27.10.2009, 20:45 #15
Цитата Сообщение от МедведЪ Посмотреть сообщение
С++ну так что,варианты есть?
какое С ?

только С++ весь код вставь и откомпили. поробуй закоментить using namespace std;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2009, 20:45
Привет! Вот еще темы с ответами:

Не понимаю записи - C++
Немогу понят что к чему const Vector2D&amp; Vector2D::Zero() { static Vector2D zero(0.0f, 0.0f); return zero; } Наиболее...

Не понимаю вопроса - C++
Что сие означает? я имею ввиду часть &quot;по убыванию элементов такого-то столбца&quot;

чуть не понимаю.. - C++
1. Управление автомобилем. 2. Поездка на автомобиле. 3. Повреждение автомобиля. 4. Выбор автомобиля для покупки. 5. Диагностика...

Не понимаю вызовы - C++
Абсолютно не понимаю вызовы. Учусь по книге Страуструпа. ... void print_square(int v); { cout&lt;&lt;v&lt;&lt;'\t'&lt;&lt;v*v&lt;&lt;endl; } int...


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

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

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