0
我需要空間,製表符和換行符分隔符的支持。我可以用sscanf來做到這一點,但我更願意堅持使用字符串而不是char * s。C++ 11 sscanf替代方案
有沒有一種方法可以在C++ 11中實現這一點?
我需要空間,製表符和換行符分隔符的支持。我可以用sscanf來做到這一點,但我更願意堅持使用字符串而不是char * s。C++ 11 sscanf替代方案
有沒有一種方法可以在C++ 11中實現這一點?
這個怎麼樣簡單的程序:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
int main()
{
std::vector<std::string> v;
std::istringstream is{"example input\ttext\nhere"};
std::copy(std::istream_iterator<std::string>(is),
std::istream_iterator<std::string>(),
std::back_inserter(v));
for (const auto& s : v)
std::cout << s << '\n';
}
從這個程序的輸出是
example input text here
正如你可以看到它使用任何空格作爲分隔符。你當然也可以使用輸入操作,以及像在
std::string s;
while (is >> s)
v.push_back(s);
以上,而不是std::copy
會產生相同的結果。
什麼abous'streams'?他們真的很糟糕嗎? –
['std :: istringstream'](http://en.cppreference.com/w/cpp/io/basic_istringstream)? –
流只允許單個分隔符,除非你們知道我不知道的一個技巧。 –