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();
答案 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
,它使用索引运算符[]
返回单个字符。为了输出整个字符串,请避免使用索引运算符。