stringstream
是 C++ 标准库中的一个类,它位于
头文件中。stringstream
是一个流类,允许你在内存中读写字符串。它提供了许多方法来处理字符串,以下是一些常用的方法:
- str():此方法返回一个表示当前
stringstream
内容的字符串。
std::stringstream ss; ss << "Hello, World!"; std::string str = ss.str(); // str 现在是 "Hello, World!"
- clear():此方法用于清除
stringstream
中的任何错误标志。
std::stringstream ss; ss << "1 / 0"; // 这将设置错误标志,因为除以零是非法的 ss.clear(); // 清除错误标志
- fail():此方法检查
stringstream
是否遇到了错误。如果遇到了错误,它将返回true
。
std::stringstream ss; ss << "1 / 0"; // 这将设置错误标志 if (ss.fail()) { std::cout << "An error occurred." << std::endl; }
- eof():此方法检查
stringstream
是否已经到达了字符串的末尾。在正常读取操作中,它通常在到达字符串末尾时返回true
。
std::stringstream ss("Hello, World!");
while (!ss.eof()) {
std::string word;
ss >> word; // 读取单词
std::cout << word << std::endl;
}
注意:在上面的例子中,eof()
可能会在读取最后一个单词后返回 true
,即使之后还有字符。为了避免这个问题,你应该在循环条件中先检查是否成功读取了数据,然后再检查是否到达了末尾。
5. operator<<:这是向 stringstream
中插入数据的主要方法。你可以像使用普通输出流一样使用它。
std::stringstream ss; ss << "The answer is: " << 42; // 向 ss 中插入数据
- operator>>:此方法从
stringstream
中提取数据。你可以像使用普通输入流一样使用它。
std::stringstream ss("10 20 30 40");
int a, b, c, d;
ss >> a >> b >> c >> d; // 从 ss 中提取数据
- imbue():此方法允许你为
stringstream
设置一个特定的语言环境,这可能会影响其字符编码和本地化行为。 - good():此方法检查
stringstream
的状态,以确定它是否处于“好”的状态(即没有错误并且已经成功地完成了至少一次输入/输出操作)。 - bad():与
good()
相反,此方法检查stringstream
是否处于“坏”的状态(即存在错误)。 - eofbit、failbit 和 badbit:这些是
stringstream
的状态标志位,分别表示是否到达了字符串末尾、是否遇到了错误以及是否存在不可恢复的错误。你可以使用clear()
方法清除这些标志位,使用setstate()
方法设置特定的标志位。
这只是 stringstream
的一部分常用方法,但它已经涵盖了大部分常见的用例。