本文共 2710 字,大约阅读时间需要 9 分钟。
在处理文件时,特别是需要读取和处理文本文件时,istringstream 是一个非常有用的工具。它能够将字符串视为输入流,从而简化了逐个读取和处理数据的过程。
ifstream 读取文件内容。istringstream 将每一行字符串转换为整数流。#include#include #include using namespace std;int main() { // 打开文件 ifstream in("aaa.txt"); string s; int sum = 0; // 读取每一行 while (getline(in, s)) { // 使用istringstream将字符串转换为整数流 istringstream sin(s); int a; // 累加每一行的整数 while (sin >> a) { sum += a; } // 输出当前行的整数之和 cout << sum << endl; sum = 0; // 重置求和变量 } return 0;}
ifstream in("aaa.txt");:打开文件aaa.txt,用于读取文件内容。string s;:用于存储每一行读取的内容。while (getline(in, s)):逐行读取文件内容,s 将包含每一行的内容。istringstream sin(s);:将字符串s 转换为输入流sin,便于逐个读取整数。while (sin >> a):从输入流sin 中读取整数a,并累加到sum 中。cout << sum << endl;:输出当前行的整数之和。sum = 0;:重置sum,为下一行的整数之和做准备。istringstream 也可以用来分割由空格或制表符分割的字符串。例如,可以将一个字符串按空格分割成单词列表。
#include#include #include using namespace std;int main() { string str = "i am a boy"; istringstream is(str); string s; while (is >> s) { cout << s << endl; } return 0;}
istringstream is(str);:将字符串str 转换为输入流is。string s;:用于存储每个单词。while (is >> s):从输入流is 中读取单词s,直到读取完毕。cout << s << endl;:输出每个单词。#include#include #include using namespace std;int main() { stringstream buf1; buf1 << 7; int n = 0; buf1 >> n; cout << "buf1 = " << buf1.str() << " n = " << n << endl; stringstream inbuf("-10"); inbuf >> n; cout << "n = " << n << endl; stringstream buf2("test", ios::ate); buf2 << '1'; cout << buf2.str() << endl; return 0;}
#include#include #include using namespace std;int main() { stringstream buf("1 2"); int n = 0; buf >> n; cout << "after reading the first int from \"1 2\", the int is " << n << ", str() = \"" << buf.str() << "\"\n"; stringstream out("1 2"); out << 3; cout << "after writing the int '3' to output stream \"1 2\"", str() = \"" << out.str() << "\"\n"; stringstream ate("1 2", ios::ate); ate << 3; cout << "after writing the int '3' to append stream \"1 2\"", str() = \"" << ate.str() << "\"\n"; return 0;}
stringstream 会分配内存来存储数据,因此如果多次使用同一个stringstream,建议在使用完毕后清空缓冲,否则可能会导致内存泄漏或性能问题。ios::ate 标志位可以在ostringstream 中追加写入,input 标志位可以从istringstream 中读取。istringstream 是一个强大的工具,能够将字符串转换为输入流,从而支持逐个读取和处理数据。它在文件处理、字符串分割以及数据转换等场景中都有广泛的应用。
转载地址:http://inpq.baihongyu.com/