在 C++ 中,如何遍历字符串中的每一行?有很多关于逐行读取文件的问题,但我怎么能用std::string
?
例如,如果我有以下字符串:
1051
2232
5152
3821
0021
3258
我将如何遍历每个数字?
在 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
等一样使用。因此,如何在 C++ 中逐行迭代 cin 中的解决方案?在这里也很重要-您可能想查看它们以获得“真实”答案(只需替换cin
为您自己的istream
编辑:作为旁注,您可以使用ostream
机制(如cout
)以与打印到屏幕相同的方式创建字符串:
std::ostringstream out;
out << header << "_" << 3.5<<".txt";
std::string filename=out.str();
使用分词器,让 '\n' 或 '\r\n' 或适合您操作系统的换行符作为分词器。
或者,如果您使用的是缓冲文件流阅读器,只需从这个新字符串创建一个字符串流,然后从字符串流而不是文件流中读取。
简而言之,除了您没有从文件中读取之外,没有任何变化。
一个非常幼稚的解决方案是从中创建一个字符串流,并在其中的 while 循环中分配整数或字符串。