如何将由空格分隔的数字字符串放入数组?

问题描述

我有一个代码,该代码获取由空格分隔的数字字符串,例如: "19 210 67"

然后将它们分开并打印出来。但问题是我想将它们三个一个接一个地放置 所以我有一个字符串数组,如:["19","210","67"]

我该如何实现?谢谢。

这里是我的C ++代码:

    std::string s = myText;
    std::string delimiter = " ";

    size_t pos = 0;
    std::string token;
    while ((pos = s.find(delimiter)) != std::string::npos) {
        token = s.substr(0,pos);
        std::cout << token << std::endl;
        s.erase(0,pos + delimiter.length());
    }
    std::cout << s << std::endl;

解决方法

使用std::istringstream解析字符串,并使用std::vector<std::string>存储每个单独的字符串:

#include <string>
#include <vector>
#include <sstream>
#include <iostream>

int main()
{
    std::string test = "19 210 67";
    std::istringstream strm(test);
    std::vector<std::string> vec;
    std::string s;

    // loop for each string and add to the vector
    while ( strm >> s )
       vec.push_back(s);

    // Output the results
    for (auto& v : vec)
      std::cout << v << " ";
}

输出:

19 210 67 
,

尝试增强分割(可在#include 中找到 ),这是带有制表符分隔符的示例:

    string input("hello world"); 
    vector<string> result; 
    boost::split(result,input,' '); 

或者只是声明一个向量,然后在代码的for循环中将令牌推回_p?

,

让我们假设您拥有任意数量的值,并且它们全部为int 首先,您对字符串进行标记化:

How do I tokenize a string in C++?

标记化的结果是一系列{std::string或以空终止的char*字符串)标记,您需要对其进行转换。看起来像这样:

std::transform(
    token_iterator_at_first_token,token_iterator_after_last_token,[](const auto& token) { return std::stoi(token); }
);

...取决于迭代器的外观。如果有容器,则迭代器可能会称为the_container.cbegin()the_container.cend()

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...