鱼C论坛

 找回密码
 立即注册
查看: 1163|回复: 2

[已解决]现在有n个字符串,其中包含一些空格,现在希望你将所有字符串中的空格删除后输出。

[复制链接]
发表于 2025-1-15 12:06:22 | 显示全部楼层    本楼为最佳答案   
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;

  4. string removeSpaces(string s, int &num) {
  5.     int pos = s.find(" ");
  6.     while (pos != string::npos) {
  7.         s.erase(pos, 1);
  8.         num++;
  9.         pos = s.find(" ");
  10.     }
  11.     return s;
  12. }

  13. int main() {
  14.     int n, num = 0;  // `num` 用于记录删除的空格总数
  15.     cin >> n;  // 读取字符串个数
  16.     cin.ignore();  // 清除缓冲区中的换行符

  17.     string result[n];  // 用于存储处理后的字符串

  18.     for (int i = 0; i < n; i++) {
  19.         string s;
  20.         getline(cin, s);  // 读取包含空格的整行字符串
  21.         result[i] = removeSpaces(s, num);  // 调用函数删除空格并更新 `num`
  22.     }

  23.     cout << num << endl;  // 输出总共删除的空格数
  24.     for (int i = 0; i < n; i++) {
  25.         cout << result[i] << endl;  // 输出处理后的字符串
  26.     }

  27.     return 0;
  28. }
复制代码


### 你的问题解答:
1. **函数声明错误**:
   - 函数参数和变量定义重复,`string func(string s, s1 = " ", int num)` 中的 `s1` 和 `s` 在函数体内重复定义导致混淆,且 `s1` 的默认参数值写法不合理。
   - `num` 应使用引用传递 `int &num`,否则在处理后不会记录空格总数。

2. **变量未声明**:
   - `str s` 是非法的变量声明,应该改为 `string s`,且未声明一个 `string` 用途的容器或数组存储结果。

3. **循环问题**:
   - `for (i=0, i>` 是非法的语法错误,正确写法是 `for (int i = 0; i < n; i++)`。
   
4. **输入与输出问题**:
   - 缺少处理换行符的代码,如 `cin.ignore()`。
   - 结果没有正确保存并逐行输出。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-4 02:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表