如何用c++读取一行以空格分隔的数字并存储为数组
时间: 2024-09-29 13:06:06 浏览: 148
在C++中,你可以使用`std::cin`从标准输入流读入一行数据,然后通过`getline`函数获取字符串,接着使用`std::stringstream`将字符串转换成整数,并存储到数组中。这里是一个简单的示例:
```cpp
#include <iostream>
#include <sstream>
#include <vector>
int main() {
std::string line;
std::cout << "请输入一组用空格分隔的数字:";
getline(std::cin, line); // 读入一整行
std::istringstream iss(line); // 创建一个istringstream对象
std::vector<int> numbers; // 存储数字的动态数组
int num;
while (iss >> num) { // 逐个解析整数
numbers.push_back(num); // 将整数添加到数组中
}
// 现在numbers数组已经包含了所有读入的数字
for (int i : numbers) {
std::cout << i << " ";
}
std::cout << "\n";
return 0;
}
```
在这个例子中,用户会被提示输入一系列空格分隔的数字,程序会把它们读入并存储在一个动态大小的整数向量`numbers`里。
相关问题
写一段代码在arduino uno上运行,实现通过串口接受一个字符串“360,360;720,0;0,0”,并将每个数字分别存在x1,y1
为了在Arduino Uno上通过串口接收字符串,然后解析并存储数值,你可以使用Serial库来处理串口通信,并使用String类型来存储接收到的数据。这里是一个简单的例子:
```c++
#include <SoftwareSerial.h>
// 初始化串口,注意Uno通常连接的是硬件串口0 (RX=0, TX=1)
SoftwareSerial mySerial(0, 1);
// 定义变量用于存储坐标值
int x1, y1;
String inputString;
void setup() {
Serial.begin(9600); // 主机端开启串口通信,这里设定波特率为9600
mySerial.begin(9600); // 从机端也设为相同的波特率
while (!mySerial) { // 确保串口初始化完成
Serial.println("Waiting for connection...");
}
Serial.println("Connected to host");
}
void loop() {
if (mySerial.available()) { // 如果有新数据可用
char incomingChar = mySerial.read(); // 读取一个字符
inputString += incomingChar; // 将字符追加到字符串中
if (inputString.endsWith(";")) { // 当遇到分隔符时,处理一行数据
inputString.trim(); // 移除首尾空格
String[] values = inputString.split(","); // 划分字符串为数组
x1 = parseInt(values[0]); // 转换第一个元素为整数
y1 = parseInt(values[1]);
Serial.print("Received: x=" + x1 + ", y=" + y1);
Serial.println();
inputString = ""; // 清空已处理的数据
}
}
}
阅读全文