c ++:字符串中的Foreach行(不是文件)

时间:2013-07-23 17:49:59

标签: c++ loops foreach newline

在c ++中,如何遍历字符串中的每一行?关于逐行读取文件存在很多问题,但是如何使用std::string来完成此操作?

例如,如果我有以下字符串:

1051
2232
5152
3821
0021
3258

我如何遍历每个数字?

2 个答案:

答案 0 :(得分:2)

在c ++中,您可以使用sstream标题中定义的类完全使用字符串作为文件:

#include <sstream>
//...
std::string str=...; // your string
std::istrstream in(str); // an istream, just like ifstream and cin
std::string line;
while(std::getline(in,line)){
  //do stuff with line
}

这有点过分了,但你明白了。

您可以像使用in一样使用cin,例如in>>x等因此,How do I iterate over cin line by line in C++?的解决方案也与此相关 - 您可能希望查看它们的“真实”答案(只需将cin替换为您自己的istream

编辑: 作为旁注,您可以使用ostream机制(如cout)以与打印到屏幕相同的方式创建字符串:

std::ostringstream out;
out << header << "_" << 3.5<<".txt";
std::string filename=out.str();

答案 1 :(得分:0)

使用标记生成器,让'\ n'或'\ r \ n'或您操作系统的相应换行符为令牌分割器。

或者,如果您使用的是缓冲文件流阅读器,只需从此新字符串创建一个字符串流,然后从字符串流而不是文件流中读取。

简而言之,除了您没有从文件中读取外,没有任何变化。

一个非常天真的解决方案是从中创建一个字符串流,并从中分配一个while循环中的整数或字符串。