从拆分字符串定义变量?

时间:2015-12-28 02:30:47

标签: c++

所以,我已经制作了这段代码,它基本上将用户输入分成不同的字符串。

例如

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 ";

3 个答案:

答案 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;
}