我正在读一本关于C ++的书和一本创建猪拉丁语翻译的练习。我已经找到了翻译单个单词的所有必要步骤。现在我在编写处理多字符串的函数时遇到了很多麻烦。
基本上我需要一些标准习语的帮助,用于迭代字符串的每个单词并对每个单词执行操作。
到目前为止,我所拥有的功能充其量只是草率而且我只是卡住了。
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()为不包含空格的单词执行正确的过程。
答案 0 :(得分:4)
您可以将整个字符串放在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();
}