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

Строковая переменная - C++

Восстановить пароль Регистрация
 
LVV
56 / 56 / 3
Регистрация: 15.02.2010
Сообщений: 239
18.02.2010, 19:04     Строковая переменная #1
Привет всем! Изучаю С++.
Ну, проблему кодировки в консольном окне вреде бы решил (работаю в Vicual C++ 2008).
Вот такая простенькая программка работает на русском языке: ПК спрашивает "как вас зовут", пользователь отвечает "Вася", в новой строке появляется "Привет, Вася".

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
using namespace std;
 
int main() {
    string nam;
    setlocale(LC_ALL, ".1251"); //включаеим нужную кодировку
 
    cout << "Как Вас зовут? " << endl;
        cin >> nam;
    cout << "Привет, ";
 
    setlocale(LC_ALL, ".OCP"); //возвращаемся в первоначальную кодировку
    cout  <<  nam  <<  "!";
    
    return 0;
}
Но вот другая проблема: почему я не могу ввести во время работы программы фразу с пробелами?
Например, если я введу "Вася и Коля", на экране будет приветствие "Привет, Вася!"
Подскажите, если не трудно, что я не так делаю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2010, 19:04     Строковая переменная
Посмотрите здесь:

C++ переменная
C++ строковая переменная
Строковая константа C++
C++ строковая переменная
C++ Переменная
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monte-Cristo
 Аватар для Monte-Cristo
2805 / 1370 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
18.02.2010, 19:07     Строковая переменная #2
потому что cin >> до пробела вводит.

для string делай так:

C++
1
getline(std::cin, nam);
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
18.02.2010, 19:23     Строковая переменная #3
Цитата Сообщение от LVV Посмотреть сообщение
Но вот другая проблема: почему я не могу ввести во время работы программы фразу с пробелами?
Код немного корявый, но работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main()
{
        setlocale(LC_ALL, "Russian");
        char s[256];
        char c;
        size_t i=0;
        cin.read(&c, 1);
        while((c!='\n')&&(i<255))
        {
            s[i++]=c;
            cin.read(&c, 1);
        }
        s[i]='\0';
        cout << s << endl;
 
        system("pause");
        return 0;
}
LVV
56 / 56 / 3
Регистрация: 15.02.2010
Сообщений: 239
18.02.2010, 19:28  [ТС]     Строковая переменная #4
ВСЕМ спасибо.
Класненеько работает:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
using namespace std;
 
int main() {
    string n;
    setlocale(LC_ALL, ".1251");//включаеим нужную кодировку
 
    cout <<"Как Вас зовут? "<<endl;
            getline(cin, n);
    cout << "Привет, ";
 
    setlocale(LC_ALL, ".OCP");//возвращаемся в первоначальную кодировку
    cout << n << "!\n";
    system("pause");
    return 0;
}
Yandex
Объявления
18.02.2010, 19:28     Строковая переменная
Ответ Создать тему
Опции темы

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