C++ 如何将文本(诗歌)拆分为行(字符串/字符[]),并找到每行的最后一个单词
我有一首诗,例如:C++ 如何将文本(诗歌)拆分为行(字符串/字符[]),并找到每行的最后一个单词,c++,string,C++,String,我有一首诗,例如: 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)); } 但是把文本分成几行怎么样呢?只要有新行,就在循环中调用substr 请记住,换行符
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));
}
但是把文本分成几行怎么样呢?只要有新行,就在循环中调用
substr
请记住,换行符可能因平台而异,Linux/OSX上的“”\n“
”和Windows上的“\r\n””
但是把文本分成几行呢
答案取决于文本的初始位置:如果整个文本都在一个文件中,请使用ifstream
;如果文本位于字符串中
,请使用stringstream
。在这两种情况下,请在循环中逐个从文本中提取行:
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;
}
这将从返回的单词中删除初始空格。我将使用
split
函数。另请参见:这就是为什么您通常以文本模式读取文本文件-以便为您处理换行符。while(std::getline(ss,line)){…}
?这是讽刺吗?对于你的代表,我有点惊讶你没有发布它。如果没有,我很乐意帮忙!(和1)@ HMJD不,这不是讽刺:我已经走出了C++编码10年,所以我忘记了一些技巧在这里和那里。
string lastWord(string line)
{
return line.substr(line.rfind(" ")+1);
}