在c ++中,如何遍历字符串中的每一行?关于逐行读取文件存在很多问题,但是如何使用std::string
来完成此操作?
例如,如果我有以下字符串:
1051
2232
5152
3821
0021
3258
我如何遍历每个数字?
答案 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循环中的整数或字符串。