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

C++ 如何将由空格分隔的一串数字放入数组?,c++,c++17,C++,C++17,我有一个代码,它获取一个由空格分隔的数字字符串,如: “19 210 67” 把它们分开并打印出来。但问题是我想把三个它们一个接一个地放到一个数组中 所以我有一个字符串数组,比如:[“19”、“210”、“67”] 我怎样才能做到这一点?谢谢 我的C++代码: std::string s = myText; std::string delimiter = " "; size_t pos = 0; std::string token;

我有一个代码,它获取一个由空格分隔的数字字符串,如:
“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::string s=myText;
std::字符串分隔符=”;
大小\u t pos=0;
字符串标记;
while((pos=s.find(delimiter))!=std::string::npos){
令牌=s.substr(0,位置);
std::cout用于解析字符串,而
std::vector
用于存储每个字符串:

#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 << " ";
}
尝试推进拆分(可在#include中找到 ),下面是一个带有制表符分隔符的示例:

    string input("hello world"); 
    vector<string> result; 
    boost::split(result, input, ' '); 
字符串输入(“hello world”);
矢量结果;
boost::拆分(结果,输入“”);

或者,只需声明一个向量并将代码for循环中的标记推回?

假设您有任意数量的值,它们都是
int
首先,将字符串标记化:

标记化的结果是(
std::string
或以null结尾的
char*
string)标记的序列,您需要对其进行转换。这将类似于:

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

…这取决于迭代器的外观。如果您有一个容器,迭代器可能会被称为
容器.cbegin()
容器.cend()

我在您的代码示例中没有看到任何数组。不用说,您不需要所有这些代码来分隔带空格的数字字符串。如何获取myText?
std::transform(
    token_iterator_at_first_token,
    token_iterator_after_last_token,
    [](const auto& token) { return std::stoi(token); }
);