如何在C++中遍历字符串中的单词:字符串分词
大家好!我是C++新手(之前用Python编程),遇到一个看似简单但让我卡住的任务。我需要将字符串拆分成单个单词并循环遍历它们。在Python中,一行代码就能搞定:`for word in sentence.split():`。但在C++中,事情变得复杂得多。
下面是我的任务示例。有一个包含句子的字符串:
```cpp
std::string text = "Hello, world! This is a test.";
```
我需要分别获取每个单词:"Hello,"、"world!"、"This"、"is"、"a"、"test."(或者去掉标点符号——这是细节问题)。我尝试使用`std::stringstream`:
```cpp
std::stringstream ss(text);
std::string word;
while (ss >> word) {
std::cout << word << std::endl;
}
```
这有效,但仅当单词由空格分隔时。如果分隔符是其他字符——逗号、句点、制表符——该怎么办?或者如果字符串来自CSV文件?此外,如何正确处理空字符串或连续多个空格的字符串?我听说过pr