假设我们有一个这样的文件:
1 2
3 4 5
6 7 8通常我们会做一个getline(),然后使用字符串流在行内进行解析。然而,getline返回了一个字符串,我们为该字符串创建了一个string string。有没有可能在一个字符串流中获得文件的全部内容,然后解析标记,同时知道行尾在哪里?
发布于 2013-11-24 06:42:56
将整个文件放入std::string中并将其放入std::istringstream并读取似乎没有多大意义:您可以直接从std::ifstream读取。如果你真的想把一个文件放到std::string中,这里有几个变种:
std::string s0{ std::istreambuf_iterator<char>(in), std::istreambuf_iterator<char>() };
std::string s1( (std::istreambuf_iterator<char>(in)), std::istreambuf_iterator<char>() );
std::ostringstream out; out << in.rdbuf(); std::string s2 = out.str();显然,您只需要使用这些方法中的一种,因为每种方法都将使用输入流in。一旦您将文件放入std::string中,您就可以从它构造std::istringstream。
我想你也可以使用
std::stringstream stream;
stream << in.rdbuf();
stream.seekg(std::ios_base::beg, 0);避免了首先将内容读入std::string的需要。
https://stackoverflow.com/questions/20168768
复制相似问题