所以,我已经制作了这段代码,它基本上将用户输入分成不同的字符串。
例如
Workspace.Hello.Hey would then be printed out as "Workspace" "Hello" "Hey"
但是,我需要知道如何将每个定义为可以在以后调用的自己的SEPARATE变量。 这是我的代码。
std::string str;
std::cin >> str;
std::size_t pos = 0, tmp;
while ((tmp = str.find('.', pos)) != std::string::npos) {
str[tmp] = '\0';
std::cout << "Getting " << str.substr(pos) << " then ";
pos = tmp;
}
std::cout << "Getting " << str.substr(pos) << " then ";
答案 0 :(得分:2)
C ++有一个矢量对象,您可以在其中将它们存储在连续的索引中,并根据需要访问它们。
再次考虑你正在做什么,可能更容易将字符串输入字符串流,设置。作为分隔符,然后将内容读入上面的字符串向量。
答案 1 :(得分:1)
将子串放在矢量中。这是一个例子:
std::string str;
std::cin >> str;
std::size_t pos = 0, tmp;
std::vector<std::string> values;
while ((tmp = str.find('.', pos)) != std::string::npos) {
values.push_back(str.substr(pos, tmp - pos));
pos = tmp + 1;
}
values.push_back(str.substr(pos, std::string::npos));
for (pos = 0; pos < values.length(); ++pos)
{
std::cout << "String part " << pos << " is " << values[pos] << std::endl;
}
答案 2 :(得分:0)
您可以使用Boost来标记和拆分字符串。这种方法的另一个好处是允许您拆分多个分隔符。 (见下文):
#include <iostream>
#include <string>
#include <vector>
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost;
int main() {
string text = "Workspace.Hello.Hey";
vector<string> parts;
split(parts, text, is_any_of("."));
for(auto &part : parts) {
cout << part << " ";
}
cout << endl;
return 0;
}