请帮我写一份函数,将字符串按空格分割并存入vector中,不用sstream
时间: 2025-01-01 12:42:26 浏览: 6
当然,你可以使用C++标准库中的`std::getline`函数配合`std::vector`来实现这个功能。以下是一个简单的示例,它读取一行字符串,并将其按照空格分割成多个子串,然后存储到`vector<std::string>`中:
```cpp
#include <iostream>
#include <vector>
#include <string>
// 函数定义
std::vector<std::string> splitString(const std::string& input) {
std::vector<std::string> result;
std::string word;
// 遍历输入字符串,直到遇到换行符或结束
for (size_t i = 0; i < input.length(); ++i) {
if (input[i] == ' ') { // 如果遇到空格
if (!word.empty()) { // 如果word非空,则添加到结果中
result.push_back(word);
word.clear();
}
} else if (input[i] != '\n') { // 如果不是换行符
word += input[i]; // 将字符添加到当前单词
}
}
// 处理最后一个单词(可能没有空格)
if (!word.empty()) {
result.push_back(word);
}
return result;
}
int main() {
std::string input = "This is a test string";
std::vector<std::string> words = splitString(input);
// 打印结果
for (const auto& word : words) {
std::cout << word << " ";
}
std::cout << std::endl;
return 0;
}
```
在这个例子中,`splitString`函数接受一个字符串作为参数,用`for`循环逐个检查每个字符。如果遇到空格,就将之前收集的单词添加到结果中,然后清空`word`。当遍历完字符串后,如果还有剩余的单词(即最后一个单词末尾没有空格),也会添加到结果中。
运行这段代码,你会看到原始字符串被成功地按空格分隔成了单个词。
阅读全文