如何将文本(诗歌)拆分为行(字符串/字符[])并查找每个行的最后一个单词
How to split text (poem) into lines (string/char[]) and finding last word of each one
我有一首诗,比如这个:
Roses are red
Violets are blue
Sugar is sweet
And so are you
仅用/n 分隔我需要得到每行的最后一句话,因为最后一个词找到一个朋友建议使用这个:
string lastWord(string line)
{
return line.substr(max(line.rfind(" "), 0));
}
但是将文本拆分为行呢?
但是将文本拆分为行呢?
答案取决于文本的初始位置:如果整个文本都在文件中,请使用ifstream
;如果文本在string
中,则使用stringstream
。在这两种情况下,都可以在循环中使用getline
从文本中逐个提取行:
string poem = "Roses are redn
Violets are bluen
Sugar is sweetn
And so are you";
stringstream ss(poem);
string line;
while (getline(ss, line)) {
cout << lastWord(line) << endl;
}
此外,您的lastWord
函数有一个逐一错误:您应该简单地将一个添加到 rfind
的结果中,而不是使用 max
,如下所示:
string lastWord(string line)
{
return line.substr(line.rfind(" ")+1);
}
这将从返回的单词中删除初始空格。
只要
你有换行符,就可以在循环中调用substr
。
请记住,换行符可能因平台而异,'n'
Linux/OSX 和 Windows 上的"rn"
。
我会使用split
函数。另请参阅:http://www.dotnetperls.com/split
相关文章:
- 在C++中查找(奇怪的)字符串中的单词
- 从文件中查找单词并替换到其他文件中
- 在文本中查找半个单词"ABBA"的问题
- C++:如何用split查找单词?Regex
- 如何创建一个函数,该函数在文本中查找单词的匹配项,包括跳过
- Qt使用QWebEngine查找单词功能
- 单词搜索难题:如何搜索一系列字母来查找单词
- 在字典中查找单词模式,高性能
- 查找单词最多的行并将其输出到文本文件中.C++
- 在句子中查找单词
- C++帮助:使用数组和循环在文本中查找单词
- 使用字符串查找单词的正确方法是什么
- 在文件中查找单词
- 如何使用' string::find '通过C++在文件中查找单词
- C++在不带Regex的字符串中查找单词
- 在矢量<string> cocos2d-x 中查找单词
- 通过语音在字典中查找单词
- 搜索数组以查找单词的单独实例
- 在 C++ 的文本中查找单词
- C++ 我们如何从文本文件中查找单词的每一行