输入二维char数组

时间:2018-08-13 18:21:24

标签: c++

在下面的代码中,如果我输出a[0],我将不会得到任何输出。可能是a[0]="\n",但我不明白为什么?

int main() {

    char a[50][80];
    int n;
    cin>>n;
    for(int i=0;i<=n;i++)
      {
          cin.getline(a[i],50);
      }
    sort(a,n);

    cout<<a[0];  // New line printed
    cout<<a[1];  // Stores first string

    return 0;
}

1 个答案:

答案 0 :(得分:1)

sort(a,n);

不对。

  1. 您必须传递a+n作为第二个参数。
  2. 您必须传递一个compare函数来比较以null结尾的C字符串。

sort(a, a+n, [](char* s1, char* s2) { return std::strcmp(s1, s2) < 0; });

使用std::vector<std::string>会更容易。然后您可以使用

std::vector<std::string> a;

...


sort(a.begin(), a.end());