拆分字符串后如何访问单个单词?

时间:2010-11-30 17:52:03

标签: c++

std::string token, line("This is a sentence.");
std::istringstream iss(line);
getline(iss, token, ' ');

std::cout << token[0] << "\n";

这是打印个别字母。我如何得到完整的单词?

已更新以添加:

我需要将它们作为文字进行访问...

if (word[0] == "something")
   do_this();
else
   do_that();

5 个答案:

答案 0 :(得分:5)

std::string token, line("This is a sentence.");
std::istringstream iss(line);
getline(iss, token, ' ');

std::cout << token << "\n";

存储所有令牌:

std::vector<std::string> tokens;
while (getline(iss, token, ' '))
    tokens.push_back(token);

或只是:

std::vector<std::string> tokens;
while (iss >> token)
    tokens.push_back(token);

现在tokens[i]i令牌。

答案 1 :(得分:2)

您首先必须 定义单词

如果 空白 iss >> token是默认选项:

std::string line("This is a sentence.");
std::istringstream iss(line);

std::vector<std::string> words. 
std::string token;
while(iss >> token)
  words.push_back(token);

这应该找到

This
is
a
sentence.

作为单词。

如果它比空白更复杂,你必须编写自己的词法分析器。

答案 2 :(得分:1)

您的令牌变量是String,而不是字符串数组。通过使用[0],您需要令牌的第一个字符,而不是字符串本身。

答案 3 :(得分:0)

只需打印令牌,再次执行getline。

答案 4 :(得分:0)

您已将token定义为std::string,它使用索引运算符[]返回单个字符。为了输出整个字符串,请避免使用索引运算符。