使用 cin 读取字符串失败

Failure to read a string using cin

对于这段简单的代码:

#include<iostream>
#include<string>
using std::cin;
using std::cout;
using std::string;

bool are_uniq_chars(string const&);

int main(){
string s;
cout << "Enter string: ";
cin >> s;
auto flag = are_uniq_chars(s);

我在 gdb 调试时得到以下 s 的非法值:

Thread 2 hit Breakpoint 1, main () at main.cpp:10
10  string s;
(gdb) n
11  cout << "Enter string: ";
(gdb) n
12  cin >> s;
(gdb) n
Enter string: vinod
13  auto flag = are_uniq_chars(s);
(gdb) p s
 = {<std::__1::__basic_string_common<true>> = {<No data fields>}, 
  __r_ = {<std::__1::__libcpp_compressed_pair_imp<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep, std::__1::allocator<char>, 2>> = {<std::__1::allocator<char>> = {<No data fields>}, 
      __first_ = {{__l = {__cap_ = 110429756552714, __size_ = 0, 
            __data_ = 0x0}, __s = {{__size_ = 10 '\n', __lx = 10 '\n'}, 
            __data_ = "vinod", '[=11=]0' <repeats 17 times>}, __r = {__words = {
              110429756552714, 0, 0}}}}}, <No data fields>}, 
  static npos = 18446744073709551615}

不确定哪里出了问题?代码在 macOS High Sierra 10.13.2 上 运行。

如有任何帮助,我们将不胜感激。

TIA

维诺德

猜测此输出是正常的,因为程序在修复另一个错误后开始按预期运行。