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

C++如何将文件中的紧凑字符串拆分为单个整数存入vector?

解决方案

你需要遍历字符串中的每一个字符,将其转换为对应的整数值后存入std::vector<int>。以下是完整的实现代码:

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cctype>

int main() {
    std::ifstream file("my_file_with_numbers");
    if (!file.is_open()) {
        std::cerr << "无法打开目标文件" << std::endl;
        return 1;
    }

    std::string line;
    // 逐行读取文件,getline可确保读取完整一行,避免因空格截断内容
    while (std::getline(file, line)) {
        std::vector<int> digits;
        // 遍历字符串中的每个字符
        for (char c : line) {
            // 仅处理数字字符,提升代码健壮性
            if (std::isdigit(c)) {
                // 字符转整数:利用ASCII码差值,'0'的ASCII值为48,直接相减得到对应数值
                digits.push_back(c - '0');
            }
        }

        // 示例:打印转换后的结果
        std::cout << "转换后的数字列表:";
        for (int num : digits) {
            std::cout << num << " ";
        }
        std::cout << std::endl;
    }

    file.close();
    return 0;
}

核心要点说明:

  • 字符转整数逻辑:ASCII表中数字字符'0'到'9'是连续排列的,通过c - '0'可直接将字符形式的数字转换为对应整数,比如'7' - '0'的结果就是整数7。
  • 文件读取优化:用std::getline替代file >> line,能确保读取完整一行内容,适配可能存在的行首空格场景(若你的文件行都是纯数字,两种方式均可)。
  • 合法性校验:添加std::isdigit(c)判断,避免非数字字符导致的转换错误,让代码更健壮。

如果仅需处理单行测试,可简化为:

std::string line = "7190007400050083";
std::vector<int> digits;
for (char c : line) {
    digits.push_back(c - '0');
}

内容的提问来源于stack exchange,提问作者Henrik Hillestad Løvold

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 07:40:01