1.stringstream
在C++中,std::stringstream
是标准库中的一个类,位于 <sstream>
头文件中。它提供了一个用于在内存中进行输入输出操作的字符串流。std::stringstream
允许类似用 std::cin
和 std::cout
一样操作字符串,它可以用来从字符串中读取数据,或将数据写入到字符串中。主要用于进行字符串的格式化和数据的转换。
1.创建和初始化
可以通过以下几种方式创建 std::stringstream
对象:
- 默认构造:创建一个空的
stringstream
对象。 - 使用字符串初始化:通过构造函数将一个字符串传给
stringstream
。
示例:
#include <iostream>
#include <sstream>
int main() {
std::stringstream ss1;
// 使用字符串初始化
std::stringstream ss2("qwe zxc");
return 0;
}
2.输出
#include <iostream>
#include <sstream>
int main() {
std::stringstream ss;
int x = 12;
double y = 3.45;
// 向stringstream中写入数据
ss << "It " << x << ", Double: " << y;
std::cout << ss.str() << std::endl; // 输出字符串
return 0;
}
上述代码 ss.str()
返回的是字符串流中存储的字符串。
3.输入操作
#include <iostream>
#include <sstream>
int main() {
std::stringstream ss("100 200 3.45");
int a, b;
double c;
// 从stringstream中读取数据
ss >> a >> b >> c;
std::cout << "a: " << a << ", b: " << b << ", c: " << c << std::endl;
return 0;
}
以上代码 stringstream
中的字符串被解析并提取成不同的变量。
3. 清空操作
如果想清空 stringstream
中的数据,可以使用 str("")
方法,将流的内容设置为空字符串,或者使用 clear()
来重置流的状态。
#include <iostream>
#include <sstream>
int main() {
std::stringstream ss;
ss << "Hello, world!";
std::cout << ss.str() << std::endl; // 输出 "Hello, world!"
ss.str(""); // 清空内容
std::cout << ss.str() << std::endl; // 输出空字符串
return 0;
}
1.getline
1.getline函数介绍
getline
函数是 C++ 中用于从输入流中读取一行文本的函数,通常用于读取用户输入或文件中的一行数据。它的基本用法是:
#include <iostream>
#include <string>
using namespace std;
int main() {
string line; // 用来存储输入的文本
// 提示用户输入一行文本
cout << "请输入一行文本: ";
// 使用 getline 从标准输入中读取一整行
getline(cin, line);
// 输出用户输入的内容
cout << "你输入的内容是: " << line << endl;
return 0;
}
getline
会读取一整行数据,直到遇到换行符(\n
)为止。它不会将换行符包含在返回的字符串中。函数原型为:
istream& getline (istream& is, string& str);
它接受两个参数:
is
:输入流对象(如cin
或ifstream
)。str
:存储读取内容的string
对象。
这个函数会自动处理换行符,因此你无需手动清理换行符,避免了常见的读取问题。
2. 使用 cin
和循环
可以使用 cin
来逐行读取输入数据,然后根据特定条件判断是否继续读取。例如,当输入数据结束时(通常是遇到文件结束符 EOF 或空行),停止读取。
示例:
#include <iostream>
#include <string>
using namespace std;
int main() {
string line;
while (getline(cin, line)) {
// 处理每一行输入的内容
cout << "输入的行是: " << line << endl;
}
return 0;
}
上述代码中,getline(cin, line)
会读取每一行输入数据,直到输入结束(通常通过 Ctrl + Z 或 Ctrl + D 来结束)。读取的每一行会存储在 line
变量中,之后你可以对该行数据进行处理。