我正在阅读一本关于 C++ 的书和一个创建 pig 拉丁翻译器的练习。我已经想出了翻译一个单词的所有必要步骤。现在我在制作处理多词字符串的函数时遇到了很多麻烦。
基本上,我需要有关标准习语的帮助,以遍历字符串中的每个单词并对每个单词执行操作。
到目前为止,我所拥有的功能充其量只是马虎,我只是被卡住了。
string sentenceToPigLatin(string str) {
string result = "";
for (int i = 0; i < str.length(); i++) {
char ch = str.at(i);
if (ch == ' ') {
result += toPigLatin(str.substr(0, i));
str = str.substr(i);
}
}
return result;
}
您可以假设 toPigLatin() 对不包含空格的单词执行正确的过程。
最佳答案
您可以将整个字符串放在 stringstream 中并使用提取运算符提取单个单词:
#include <sstream> // for stringstreams
string sentenceToPigLatin(const string& str)
{
istringstream stream(str);
ostringstream result;
string temp;
while (stream >> temp)
result << toPigLatin(temp) << ' ';
return result.str();
}
另一种方法是使用 standard algorithms连同 stream iterators :
#include <algorithm> // for transform
#include <iterator> // for istream_iterator and ostream_iterator
string sentenceToPigLatin(const string& str)
{
istringstream stream(str);
ostringstream result;
transform(istream_iterator<string>(stream),
istream_iterator<string>(),
ostream_iterator<string>(result, " "),
toPigLatin);
return result.str();
}
关于c++ - Pig Latin 字符串迭代,多个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12132013/