Функция Getline, использующая код

0

Поднять C++ и перейти на него на OS X 10.9 с использованием XCode 5.0.2 и использовать Alex Allain в качестве ссылки.

Следующий код компилируется точно и правильно выводит

#include <iostream>
#include <string>

using namespace std;

int main()

{
std::string user_first_name = "test";

std::cout << user_first_name << "\n";

return 0;
}

Когда я добавляю функцию getline, код компилируется, но без вывода.

#include <iostream>
#include <string>

using namespace std;

int main()

{
std::string user_first_name = "test";

std::getline( std::cin, user_first_name, '\n' );

std::cout << user_first_name << "\n";

return 0;
}

Фактически, отладочный навигатор имеет память, заполненную полосками (хотя фактическое использование памяти фиксировано в 276 КБ). Почему я нахожусь в тупике по такой простой вещи/концепции?

Я немного поработал, и вполне вероятно, что это связано с проблемой кодирования текста. Я использую настройки по умолчанию, которые являются Unicode (UTF-8). Кодирование - это не то, с чем я знаком, никогда не с чем мне приходилось сталкиваться при обучении в Windows. Как мне пройти мимо этого?

  • 1
    Когда вы пишете что-то, за которым следует клавиша ввода, ничего не выводится?
  • 0
    «Похоже, что компилируется, но без вывода» --- Это не так .
Показать ещё 3 комментария
Теги:
unicode
getline

1 ответ

0

Я не могу комментировать использование XCode или OS X, но я понял, что std :: cin всегда дает вам узкий (однобайтовый) поток символов. В Windows (по крайней мере, с Visual Studio) я думаю, что это работает, если вы скомпилируете для UTF8 (однобайтовый для всех символов ASCII) или UTF16 (2 байта для всех символов ASCII). Библиотека времени исполнения предположительно делает преобразование для вас по мере необходимости.

Я не уверен, что означает "заполнение барами", но, возможно, это просто то, что вы смотрите на неинициализированную память. Если вы считаете, что это проблема с кодировкой, попробуйте использовать wstring/wcin вместо string/cin и посмотрите, поможет ли это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню