Defining variables from split strings?
所以,我编写了这段代码,它基本上将用户输入拆分成不同的字符串。
例如
1 | Workspace.Hello.Hey would then be printed out as"Workspace""Hello""Hey" |
但是,我需要知道如何将这些变量定义为它们各自独立的变量,稍后可以调用这些变量。这就是我的密码。
1 2 3 4 5 6 7 8 9 | 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"; |
C++有一个向量对象,你可以将它们存储在连续的索引中,并根据需要访问它们。
再想一想你在做什么,你可以更容易地将字符串输入到一个Stringstream,set中。作为分隔符,然后像上面一样将内容读取到字符串的向量中。
将子字符串放入向量中。下面是一个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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; } |
您可以使用boost标记化和拆分字符串。这种方法还有一个额外的好处,即允许您在多个熟食店中拆分。(见下文):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #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; } |