Строительство станд.:: последовательность терпит неудачу

Я боюсь, что это - действительно глупый вопрос, но я не получаю его. Я строю станд.:: последовательность , который содержит перевод строки (необходимый для последующей обработки) этот путь:

std::string mystr=std::string("\n")

Удивительно mystr пуст впоследствии. И когда я ступаю в конструктора последовательности переданный, данные пусты также (так никакой \n содержавший). Что не так здесь?

3
nl ja de
ideone.com/tHTWLJ
добавлено автор Billy ONeal, источник
ideone.com/tHTWLJ
добавлено автор Billy ONeal, источник
Характер \n является символом новой строки, не переводом строки. \r является переводом строки.
добавлено автор Pete Becker, источник
Характер \n является символом новой строки, не переводом строки. \r является переводом строки.
добавлено автор Pete Becker, источник
Почему don' t вы просто используете станд.:: натянуть mystr = "\n" ?
добавлено автор sgarizvi, источник
Почему don' t вы просто используете станд.:: натянуть mystr = "\n" ?
добавлено автор sgarizvi, источник
Вы могли также использовать станд.:: endl
добавлено автор nikhil, источник
Вы могли также использовать станд.:: endl
добавлено автор nikhil, источник

2 ответы

Последовательность не должна быть пустой, у нее должен быть размер 1 . Что принуждает вас полагать, что это пусто?

#include 
#include 

int main()
{
  std::string s1 = std::string("\n");
  std::string s2;
  std::cout << s1.size() << "\n";
  std::cout << s2.size() << "\n";
}

продукция 1 и 0 .

То, что могло смущать вас, является копией elision или строительством движения в этом выражении:

std::string s1 = std::string("\n");

какой обычно писал бы как это так или иначе:

std::string s1("\n");
2
добавлено

Последовательность не должна быть пустой, у нее должен быть размер 1 . Что принуждает вас полагать, что это пусто?

#include 
#include 

int main()
{
  std::string s1 = std::string("\n");
  std::string s2;
  std::cout << s1.size() << "\n";
  std::cout << s2.size() << "\n";
}

продукция 1 и 0 .

То, что могло смущать вас, является копией elision или строительством движения в этом выражении:

std::string s1 = std::string("\n");

какой обычно писал бы как это так или иначе:

std::string s1("\n");
2
добавлено
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest