C++逐行处理串

jgwigjjp  于 2023-02-01  发布在  其他
关注(0)|答案(2)|浏览(123)

所以我有字符串:

string message = "Hello\nHow are you?\nGood!"

我想把它一行一行的格式:

string line = "";

for (getline(message, line)) {
    // do something with the line
}

如何实现这一点?getline是否会被使用并不重要。
我尝试按\n拆分字符串,但无法使用for循环

a6b3iqyw

a6b3iqyw1#

getline需要一个输入流才能工作,幸运的是,我们有std::stringstream,您可以从名称中看出它是一个字符串流。

std::string line;
std::stringstream ss(message);
while(getline(ss, line)) {
    // do something with the line
}
cl25kdpy

cl25kdpy2#

使用c++20范围,您可以在拆分视图上循环执行此操作:

for (auto line_view : std::ranges::split_view(message, "\n")) {
    std::string_view line{line_view.begin(), line_view.end()};
    // do something with the line
}

Demo
这可以避免对原始字符串和每一行制作多个副本,根据字符串的大小,这可能值得额外的复杂性。

相关问题