在C++中,接收多行字符串输入可以通过多种方式实现。以下是几种常见的方法:
std::getline
std::getline
函数可以从输入流中读取一行字符串,直到遇到换行符为止。你可以循环调用这个函数来读取多行输入。
#include <iostream>
#include <string>
int main() {
std::string line;
std::cout << "请输入多行字符串(输入空行结束):" << std::endl;
while (true) {
std::getline(std::cin, line);
if (line.empty()) {
break;
}
std::cout << "收到:'" << line << "'" << std::endl;
}
return 0;
}
std::cin
和 std::ws
std::cin
可以用来读取输入,但默认情况下会忽略前导空白字符。使用 std::ws
可以跳过这些空白字符。
#include <iostream>
#include <string>
int main() {
std::string line;
std::cout << "请输入多行字符串(输入空行结束):" << std::endl;
while (std::getline(std::cin >> std::ws, line)) {
if (line.empty()) {
break;
}
std::cout << "收到:'" << line << "'" << std::endl;
}
return 0;
}
std::stringstream
如果你需要处理更复杂的输入格式,可以使用 std::stringstream
来解析输入。
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::string input;
std::cout << "请输入多行字符串(输入空行结束):" << std::endl;
while (std::getline(std::cin, input)) {
if (input.empty()) {
break;
}
std::stringstream ss(input);
std::string line;
while (std::getline(ss, line)) {
std::cout << "收到:'" << line << "'" << std::endl;
}
}
return 0;
}
这些方法适用于需要从用户那里获取多行文本输入的各种应用场景,例如:
std::getline
返回 false
。可以通过检查 std::cin.eof()
来处理这种情况。std::getline
返回 false
。可以通过检查 std::cin.eof()
来处理这种情况。std::ws
可以帮助清除这些空白字符。通过这些方法和注意事项,你可以有效地在C++程序中处理多行字符串输入。
领取专属 10元无门槛券
手把手带您无忧上云