我必須接受來自用戶的空格分隔整數,但當我遇到新行時停止。 例如:如何在C++中檢查行結束符?
3 5 7 9
23 47
6
在這個例子中我必須存儲在陣列1 3, 5, 7, 9
,23, 47
在陣列2,6
在陣列3 不幸的是,我不知道如何檢查線的在C端++ 。請幫助我。
我必須接受來自用戶的空格分隔整數,但當我遇到新行時停止。 例如:如何在C++中檢查行結束符?
3 5 7 9
23 47
6
在這個例子中我必須存儲在陣列1 3, 5, 7, 9
,23, 47
在陣列2,6
在陣列3 不幸的是,我不知道如何檢查線的在C端++ 。請幫助我。
通常的解決方法是用std::getline
逐行讀取,然後用std::istringstream
來解析每一行。
也許不那麼簡單,但這是我多年來一直使用的代碼片段來讀取數據文件。給它一個字符串和一個分隔符,它將返回一個分隔字符串的向量。我通常用它來分解線條,但是如果你有一個奇怪的字符表示一條線的末尾,我想同樣的原則適用。我應該說我沒有寫,但我早已忘記了我在哪裏找到它。
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;
}
請向我們展示您的代碼。 – MSalters