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;
}
解决方案
sort(a,n);
是不正确的。
- 您必须
a+n
作为第二个参数传递。 - 您必须传递一个比较函数来比较以空结尾的 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());
推荐阅读
- reactjs - 将变量添加到 JSX 字符串
- python - 为什么 ARIMA 可以正确拟合但生成平坦的预测?
- amazon-cloudformation - Cloudformation AWS EIP 因域 vpc 无效而失败
- azure-cosmosdb - Azure Cosmos DB 实体插入和数据资源管理器错误
- java - 不需要 Infra.properties 文件的 Intellij Idea 构建 jar 文件
- angular - 角度绑定列表到另一个具有不同属性名称的列表
- android - 从 Web 视图中清除搜索结果
- python - 如何从 gunicorn 过滤日志?
- session-state - WebSphere Commerce HttpSession 使用现有会话管理打开的页面
- node.js - 如何进行集成测试 NodeJS + Firebase Admin?