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

C++如何打印string数组中存储的单词长度,解决现有代码执行错误

问题原因分析

你代码中存在3个核心问题导致运行异常:

  • 非标准可变长度数组:string A[n]属于C语言的可变长度数组特性,C++标准并未支持,仅部分编译器做了扩展实现,可移植性差,运行时容易触发内存异常
  • strlen参数类型错误:strlen仅支持传入C风格的char*空终止字符串,直接传入std::string类型对象会触发类型不匹配错误,std::string本身提供了length()/size()方法可直接获取长度
  • 输入缓冲区残留换行符问题:cin >> n读取数字后会在输入缓冲区留下换行符,后续逐行读取内容时会读到空行,需要先清空残留的换行符
可行实现代码
#include <iostream>
#include <vector>
#include <string>
#include <limits>
using namespace std;

int main(){
    int n;
    cout << "enter no" << endl;
    cin >> n;
    // 清空输入缓冲区残留的换行符
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    
    // 用标准容器vector存储字符串,替代非标准可变长度数组
    vector<string> words(n);
    for(int i = 0; i < n; i++){
        // 逐行读取,支持输入带空格的单词
        getline(cin, words[i]);
    }
    // 直接调用string自带的length方法获取长度
    cout << words[2].length() << endl;
    return 0;
}
测试验证

输入示例:

3
leonardo
tom
brad

输出结果为4,完全符合预期。

内容的提问来源于stack exchange,提问作者Abhinav Pipil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:39:01