c++中如何输入一行各种数据类型的数据
时间: 2024-11-20 18:39:15 浏览: 31
在C++中,一次性从标准输入流`cin`读取一行并解析成不同类型的变量通常需要手动处理字符串,然后根据每个元素的类型进行转换。例如,你可以用`getline`函数读取字符串,然后通过`istringstream`或`std::stringstream`来逐个解析整数、浮点数等。
下面是一个简单的示例,假设我们想要读取一串由空格分隔的整数和浮点数:
```cpp
#include <iostream>
#include <sstream>
#include <vector>
int main() {
std::string input;
getline(std::cin, input); // 读取一行
std::istringstream iss(input);
std::vector<double> numbers; // 存储数值
double num;
while (iss >> num) {
numbers.push_back(num);
}
// 检查是否读完所有数字,处理可能出现的异常
if (!iss.fail()) {
std::cout << "Parsed numbers: ";
for (double n : numbers) {
std::cout << n << " ";
}
std::cout << "\n";
} else {
std::cerr << "Invalid input or no more values.\n";
}
return 0;
}
```
在这个例子中,如果输入不符合预期(例如包含非数字字符),`iss >> num`将失败,并设置`iss.fail()`为真,我们可以在循环结束后检查这个标志来处理错误。
阅读全文