我仍然有一些问题,我想如果我设法解决这个问题,我将最终掌握它。
我有line
我在分隔符空间strtok
。现在我想将所有标记存储在数组char* tokens[50]
上的指针中。如何将所有标记存储在此指针中,以及在存储后如何访问所有标记。我想我还需要一个计数器int token_count
。
答案 0 :(得分:3)
这是直截了当的。例如:
char * tokens[50];
size_t n = 0;
for (char * p = strtok(line, " "); p; p = strtok(NULL, " "))
{
if (n >= 50)
{
// maximum number of storable tokens exceeded
break;
}
tokens[n++] = p;
}
for (size_t i = 0; i != n; ++i)
{
printf("Token %zu is '%s'.\n", i, tokens[i]);
}
请注意,line
必须指向可变字符串,因为strtok
会破坏字符串。
答案 1 :(得分:-1)
为什么不在C ++ 11中使用正则表达式?您可以将一个空格(一个或多个)表示为一个简单的正则表达式" \ s +"并使用正则表达式令牌迭代器来迭代令牌,你可以将令牌存储在一个向量中。这是一个只打印出令牌的例子。
#include <regex>
#include <string>
#include <iostream>
using namespace std;
int main()
{
regex re("\\s+");
string s = "Token1 token2 token3"; //example string
sregex_token_iterator reg_end;
for(sregex_token_iterator it(s.begin(), s.end(), re, -1); it != reg_end; ++it) {
cout << it->str() << endl;
}
}