You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++加解密程序仅处理前4字符问题求助:如何获取输入数组长度

解决C++单词加解密循环范围问题 & 获取输入长度的方法

嘿,我明白你的困扰——程序只能处理前4个字符,肯定是循环的终止条件写死成固定数值了对吧?别担心,咱们一步步来解决:

首先,获取输入内容的实际长度

在C++里,获取输入的单词长度有两种常用方式,取决于你用的是char数组还是std::string:

1. 如果你用的是char数组

可以用标准库的strlen()函数,它会自动计算从数组起始位置到第一个'\0'(字符串结束符)之间的字符数,也就是你输入的单词实际长度。记得要包含头文件<cstring>哦。
示例代码:

#include <iostream>
#include <cstring>
using namespace std;

int main() {
    char word[100]; // 定义足够大的数组避免溢出
    cin >> word;
    int length = strlen(word); // 获取实际输入的单词长度
    cout << "单词长度:" << length << endl;
    return 0;
}

2. 更推荐的方式:用std::string类

如果你改用std::string来存储输入的单词,那获取长度就更简单了,直接调用.size()或者.length()方法就行,而且完全不用担心数组溢出的问题:
示例代码:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string word;
    cin >> word;
    int length = word.size(); // 或者 word.length(),两者效果一样
    cout << "单词长度:" << length << endl;
    return 0;
}

然后,修改你的循环逻辑

原来的循环应该是写死了只执行4次,比如for(int i = 0; i < 4; i++),现在把循环的终止条件换成咱们刚才获取到的长度就行:

如果是char数组版本:

// 加密示例
for(int i = 0; i < strlen(word); i++) {
    word[i] += 1; // 简单的移位加密,你可以换成自己的加密逻辑
}

如果是std::string版本:

除了用下标循环,还可以用更简洁的范围for循环:

// 加密示例
for(char &c : word) { // 用引用才能修改原字符
    c += 1;
}
// 或者下标循环
for(int i = 0; i < word.size(); i++) {
    word[i] += 1;
}

这样循环就会遍历整个单词的每一个字符,而不只是前4个啦!

另外提醒一下:如果用char数组,一定要确保数组的大小足够容纳用户输入的单词(包括末尾的'\0'),不然会出现溢出问题,所以更推荐用std::string,它会自动管理内存,省心很多。

内容的提问来源于stack exchange,提问作者Ahmed Hassan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:12:18