📅  最后修改于: 2023-12-03 15:36:34.462000             🧑  作者: Mango
在 C++ 中,处理字符串是经常需要的任务之一。较小的字符串可以直接使用 stringstream
处理,但当需要对比较大的文本进行处理时,可以使用 istringstream
来处理。
istringstream
是 std::istringstream
的别名,它是一个输入流,可以读入字符串并将其解析为变量。它基本上是将字符串流变成了一个标准输入流,因此可以使用流运算符>>
来读取其内容。
下面是一个简单的示例,它读入一个字符串并解析其中的整数:
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::string input = "23 45 54";
std::istringstream stream(input);
int a = 0, b = 0, c = 0;
stream >> a >> b >> c;
if (!stream.fail()) {
std::cout << "a: " << a << " b: " << b << " c: " << c << std::endl;
} else {
std::cerr << "input error" << std::endl;
}
return 0;
}
这个程序将打印出:
a: 23 b: 45 c: 54
在示例中,字符串 "23 45 54" 被读入到一个 istringstream
中。然后,它使用输入运算符 >>
来从 istringstream
中读取它并将其存储到整数变量中。如果读取成功,则打印出所读取的值。
值得注意的是,在使用 istringstream
时,必须检查其状态以确保读取成功。我们可以通过fail ()
函数在输入错误的情况下检查输入流的状态。
有时候,我们希望获取整个输入流的内容而不是单个变量。在这种情况下,可以使用 std::getline()
函数来读取整行。
以下是一个示例程序,它将逐行读取输入字符串并将其打印输出:
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::string input = "Hello, world!\n"
"This is a demo program\n"
"for istringstream\n";
std::istringstream stream(input);
std::string line;
while (std::getline(stream, line)) {
std::cout << line << std::endl;
}
return 0;
}
这个程序将打印出:
Hello, world!
This is a demo program
for istringstream
在示例中,输入字符串被读入并存储在 istringstream
中。使用 getline()
函数,程序逐行读取输入流并将其打印到控制台中。
总体而言,使用 istringstream
处理字符串是一种非常便捷的方法,它提供了一种轻松读取字符串并将其解析为其他数据类型的方式。