首页 > 解决方案 > 输入二维字符数组

问题描述

在下面的代码中,如果我输出,我不会得到任何输出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;
}

标签: c++

解决方案


sort(a,n);

是不正确的。

  1. 您必须a+n作为第二个参数传递。
  2. 您必须传递一个比较函数来比较以空结尾的 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());

推荐阅读