我必须从用户接受空格分隔的整数,但在遇到新行时停止。 例如:
3 5 7 9
23 47
6
在此示例中,我必须将3, 5, 7, 9
存储在数组1中,23, 47
存储在数组2中,6
存储在数组3中。
不幸的是,我不知道如何在C ++中检查行尾。请帮帮我。
答案 0 :(得分:10)
通常的解决方案是使用std::getline
逐行阅读,然后std::istringstream
来解析每一行。
答案 1 :(得分:1)
可能不那么简单,但这是我多年来一直用来读取数据文件的代码片段。给它一个字符串和一个分隔符,它将返回一个分隔字符串的向量。我通常用它来分解线条,但如果你有一个奇怪的字符代表一条线的末尾,我想同样的原则适用。我应该说我没有写它,但我早就忘记了我找到它的地方。
Split(std::string& line, std::string& splitter)
{
std::vector<std::string> result;
if (!line.empty() && !splitter.empty())
{
for (std::string::size_type offset = 0;;)
{
std::string::size_type found = line.find(splitter, offset);
if (found != std::string::npos)
{
std::string tmpString = line.substr(offset, found-offset);
if (tmpString.size() > 0)
{
result.push_back(tmpString);
}
offset = found + splitter.size();
} else {
std::string tmpString = line.substr(offset, line.size()-offset);
if (tmpString.size() > 0)
{
result.push_back(tmpString);
}
break;
}
}
}
return result;
}