我有一首诗,例如:
Roses are red
Violets are blue
Sugar is sweet
And so are you
只用/n 分隔 我需要得到每一行的最后一个词,最后一个词找到一个 friend 建议使用这个:
string lastWord(string line)
{
return line.substr(max(line.rfind(" "), 0));
}
但是如何将文本拆分成行呢?
最佳答案
But what about splitting text into lines?
答案取决于文本最初的位置:如果整个文本都在一个文件中,使用ifstream
;如果文本在 string
中,请使用 stringstream
。在这两种情况下,使用 getline
在循环中逐行从文本中提取行:
string poem = "Roses are red\n\
Violets are blue\n\
Sugar is sweet\n\
And so are you";
stringstream ss(poem);
string line;
while (getline(ss, line)) {
cout << lastWord(line) << endl;
}
此外,您的 lastWord
函数有一个差一错误:您应该简单地将 1 添加到 rfind
的结果,而不是使用 max
,像这样:
string lastWord(string line)
{
return line.substr(line.rfind(" ")+1);
}
这将从返回的单词中删除初始空格。
关于c++ - 如何将文本(诗歌)分成几行(字符串/字符[])并找到每一行的最后一个词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13585544/