如何解决如何将由空格分隔的数字字符串放入数组?
我有一个代码,该代码获取由空格分隔的数字字符串,例如:
"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()
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。