📅  最后修改于: 2023-12-03 15:09:39.360000             🧑  作者: Mango
在C++中,从输入流中读取字符串并将其分解为单词或标记可能是一个常见的任务,这在解析文本文件或命令行参数等应用程序中会经常用到。本文将介绍一种基于C++的方法来将输入流分解为单词。
基本思路是从输入流中一次读取一个字符,将其存储在一个字符串变量中,并判断该字符是否为分隔符,如果是,则将该字符串存储为一个单词。以下是C++实现的示例代码片段:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main() {
string input = "This is a string to be tokenized.";
istringstream iss(input);
string word;
while (iss >> word) {
cout << word << endl;
}
return 0;
}
在该代码片段中,我们使用了istringstream类来模拟输入流。istringstream是一个基于字符串的输入流,它允许我们使用“>>”操作符从流中提取单词。如果我们使用的是标准输入流,我们可以将代码修改为以下内容:
#include <iostream>
#include <string>
using namespace std;
int main() {
string input;
getline(cin, input);
string word;
for (auto c : input) {
if (c == ' ') {
cout << word << endl;
word = "";
} else {
word += c;
}
}
cout << word << endl; // 输出最后一个单词
return 0;
}
在这个代码片段中,我们使用了cin输入流从控制台读取字符串,并通过对字符串进行迭代来找到单词。如果一个字符是空格,我们就将之前存储的字符串作为一个单词打印并清空字符串。否则,我们将当前字符添加到字符串末尾以构建当前单词。
本文介绍了两种将输入流分解为单词的方法。第一种方法使用了istringstream类,该方法可以方便地从字符串中提取单词并将其存储到一个变量中。第二种方法使用了标准输入流和字符串迭代,该方法可以从控制台读取字符串并将其分解为单词。这两种方法都十分实用,程序员可以根据自己的需要选择其中一种。