gpt4 book ai didi

c++ - 将长字符串分成多个 C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:00:33 25 4
gpt4 key购买 nike

我有一个从第三方收到的字符串。该字符串实际上是来自文本文件的文本,它可能包含用于行终止的 UNIX LF 或 Windows CRLF。我怎样才能把它分成多个字符串而忽略空行?我打算执行以下操作,但不确定是否有更好的方法。我需要做的就是逐行阅读。这里的vector只是为了方便,我可以避免。* 很遗憾,我无权访问实际文件。我只收到字符串对象 *

string textLine;
vector<string> tokens;

size_t pos = 0;
while( true ) {
size_t nextPos = textLine.find( pos, '\n\r' );
if( nextPos == textLine.npos )
break;
tokens.push_back( string( textLine.substr( pos, nextPos - pos ) ) );
pos = nextPos + 1;
}

最佳答案

您可以在读取文件时使用 std::getline,而不是将整个文件读取到字符串中。默认情况下,这将逐行分解。您可以简单地不 push_back 任何空字符串。

string line;
vector<string> tokens;

while (getline(file, line))
{
if (!line.empty()) tokens.push_back(line);
}

更新:

如果您无权访问该文件,您可以通过使用整个文本初始化 stringstream 来使用相同的代码。 std::getline 适用于所有流类型,而不仅仅是文件。

关于c++ - 将长字符串分成多个 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6126635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com